Ruby 关于 loop 循环以及 gets 方法的疑问

runup · 2016年01月22日 · 最后由 aippp 回复于 2016年03月29日 · 1992 次阅读

loop 方法没有终止循环条件,只是不断的执行循环处理,如下列代码所示:

loop do
  print "Ruby"
end

结果是:

Ruby
Ruby
......

下面是一段元编程书中的代码:

def explore_array(method)
  code = "['a', 'b', 'c'].#{method}"
  puts "evaluating: #{code}"
  eval code
end

loop { p explore_array(gets()) }

在终端中执行上面的代码,回车,输入 size,只会执行一次该方法,即:

['a', 'b', 'c'].size

然后等待下次方法的输入,为什么 gets 方法出现在 loop 循环中会出现如上的结果,即只循环一次,而不是循环无限次?

循环了吧,你没有输入,它就会一直等待啊。

#1 楼 @adamshen 大概能理解了。

eval code 是什么意思

需要 登录 后方可回复, 如果你还没有账号请 注册新账号