所以这在ruby是合法的:

puts key: "value"

{:key=>“值”}
但这不是:
hsh = key: "value"
puts hsh

rb:1:语法错误,意外的“:”,应为输入结尾
hsh=键:“值”
为什么不?我什么时候可以为散列省略花括号?

最佳答案

当散列是方法调用的最后一个参数时,可以省略大括号。当你写作时:

 puts key: 'value'

实际上,您使用参数puts调用{key: value}方法,这样您就可以编写:
puts({key: 'value'})

但在ruby中,可以跳过普通大括号和花括号。
要详细了解其工作原理,请考虑以下示例:
# Hash as only paramter
puts(a:1)
#{:a=>1}

# Hash as a last parameter
puts('cat', a: 1)
#cat
#{:a=>1}

# Hash as a first parameter - cannot skip
puts(a: 1, 'cat')
# >> SyntaxError: unexpected ')', expecting =>
# >> puts(a: 1, 'cat')
                ^
puts({a: 1}, 'cat')
#{:a=>1}
#cat

# Two hashes
puts({a: 1}, {b: 2})
#{:a=>1}
#{:b=>2}

puts({a: 1}, b: 2)
#{:a=>1}
#{:b=>2}

关于ruby - 什么时候可以省略用于Ruby哈希的花括号?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57223388/

10-13 02:15