【发布时间】:2018-10-21 03:18:48
【问题描述】:
有人可以向我解释为什么在 ruby 控制台(版本 2.3.4) 试图打印哈希 这些工作:
puts({a: 'a', b: 'b'})
puts(a: 'a', b: 'b')
puts a: 'a', b: 'b'
puts [a: 'a', b: 'b'] <<< array length 1 with value of hash
puts Hash[a: 'a', b: 'b']
但这些都不起作用:
puts {a: 'a', b: 'b'}
puts {:a => 'a', :b => 'b'}
puts{:a => 'a', :b => 'b'}
给出错误:
语法错误,意外 ',',期待 '}'
放 {a: 'a', b: 'b'}
_ _ _ _ _ _^
还有这些:
puts {:a => 'a'}
puts {a: 'a'}
puts{a: 'a'}
还有错误:
语法错误,意外 =>,需要 '}'
放 {:a => 'a'}
_ _ _ _ _ ^
我的理解是,函数 () 完全是可选的,取决于开发人员的风格偏好。
而散列周围的 {} 大多是可选的,但从不要求不使用。
如果解释器在 1 个或 2 个哈希之间混淆(因为 puts 需要 1+ 个参数),我可以理解,但它就死了。
更糟糕的是: 这些工作:
puts({a: 'a', b: 'b'}, [:d, :e])
puts ({a: 'a', b: 'b'})
但这些没有:
puts ({a: 'a', b: 'b'}, [:d, :e])
puts (Hash[a: 'a', b: 'b'], [:d, :e])
谁能解释一下幕后到底发生了什么?
【问题讨论】:
标签: ruby syntax-error literals puts ruby-2.3