gpt4 book ai didi

尝试放置文字哈希时出现 Ruby 语法错误

转载 作者:数据小太阳 更新时间:2023-10-29 07:51:39 24 4
gpt4 key购买 nike

有人可以向我解释为什么在 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'}

给出错误:

syntax error, unexpected ',', expecting '}'

puts {a: 'a', b: 'b'}

_ _ _ _ _ _^

还有这些:

 puts {:a => 'a'}
puts {a: 'a'}
puts{a: 'a'}

还有错误:

syntax error, unexpected =>, expecting '}'

puts {: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 有一个小故障,因为它对圆括号过于宽容。你几乎可以把它们放在任何地方,但是......

puts{} 解析为“使用 block {} 调用 puts”。反过来,一个 block 必须包含完整的语句,而不是逗号 , 分隔的列表。所以你会得到错误的语法错误。

修复只是 puts({})

接下来,puts () 解析为“puts 后跟一个参数,在括号中。”因此,解析器无法处理括号内的逗号 ,。解决方法是去掉空格:puts()

关于尝试放置文字哈希时出现 Ruby 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50279906/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com