新手问题 Throw & Catch 的参数问题

davidwei · 2012年06月22日 · 3350 次阅读

现在在看双飞燕的中文版,里面讲到控制结构:Throw 和 Catch。catch 的对象可以是 Symbol 或者字符串。对于下面的代码,使用 Symbol 能够正常返回 1,但是如果将:hello替换成"hello"却会报错:ArgumentError: uncaught throw "hello"。请大家指导下,谢谢。 另外有些疑惑:在 ruby 的 api 中,对于 catch([arg]) {|tag| block }中的 arg 是这样描述的:arg can be an arbitrary object, not only Symbol.,任意的对象,不限 Symbol,这样说是指双飞燕的中文翻译有误么?

代码:

  a = ('a'..'c').to_a

def test(a)
  for ele in a do
    throw :hello,1 if ele == 'b'
  end
end

catch(:hello){ test(a) } 
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号