新手问题 pg Ruby 1.9 & 2.0 书中关于多个参数的 blocks 调用的例子出错

woojuno · 2014年08月22日 · 最后由 woojuno 回复于 2014年08月22日 · 2033 次阅读

2.7 节中有一个例子

def who_says_what
    yield ( "Dave" , "hello" )
    yield ( "Andy", "goodbye" )
end

who_says_what {|person, phrase| puts "​#{person}​ says ​#{phrase}​"}

书中的输出结果:

Dave says hello

Andy says goodbye

但是,我的运行结果出错:

syntax error, unexpected ',', expecting ')' yield ( "Dave" , "hello" ) ^ syntax error, unexpected ')', expecting keyword_end syntax error, unexpected ',', expecting ')' yield ( "Andy", "goodbye" ) ^ syntax error, unexpected ')', expecting keyword_end syntax error, unexpected tIDENTIFIER, expecting '}' ...on}​ says ​#{phrase}​"​}

... ^

看文档也没发现哪里用错了,谁能帮我看看?

  1. yield 后面的空格去掉
  2. who_says_what 里面的奇怪符号去掉

#1 楼 @Rei who_says_what 里面的奇怪符号去掉 这个指的是哪个?

#3 楼 @Rei 这个是网页上复制的问题吧。我在 sublime 里是空格噢,我换记事本重新输入空格编辑了下,依然还是抛错。

#2 楼 @woojuno 你可能没详细看文档,这是 ruby 有点变态的地方,看这个例子:

def wtf(x, y)
  puts x, y
end

wtf 1, 2 # 两个参数,ok
wtf(1, 2) # 两个参数,也 ok
wtf (1, 2)  # wtf 后面有空格时, (1, 2) 会整体被看作一个参数(表达式)
wtf (1), (2) # wtf 后面也有空格,参数单独分开,就 ok
需要 登录 后方可回复, 如果你还没有账号请 注册新账号