新手问题 关于 Ruby puts 的一个小问题

torubylist · 2016年01月07日 · 最后由 frodosens 回复于 2016年02月04日 · 1917 次阅读

看 ruby programming。irb 里面尝试。发现了一个小问题。求解。

2.3.0 :001 > puts { name: 'yzhao',email: '[email protected]'  }.class
SyntaxError: (irb):1: syntax error, unexpected ':', expecting '}'
puts {name: 'yzhao',email: '[email protected]' }.class
           ^
(irb):1: syntax error, unexpected ',', expecting '}'
puts {name: 'yzhao',email: '[email protected]' }.class
                    ^
    from /Users/zhaoyongping/.rvm/rubies/ruby-2.3.0/bin/irb:11:in `<main>'
2.3.0 :002 > a = {name: 'yzhao',email: '[email protected]' }.class
 => Hash 
2.3.0 :003 > puts a
Hash
 => nil 
2.3.0 :004 > 

我仔细想了下,难道是优先级的问题,先 puts {}.然后再取 class?貌似不合常理啊。

好像是不能直接 puts 哈希

puts( { name: 'yzhao',email: '[email protected]'  }.class)

带上括号就行了,不带括号会产生歧义。

{ } 会被认为是函数块 加上括号即可

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