我甚至不知道给这个人提供什么标题。有人可以向我解释这里到底发生了什么事吗?这是我正在做的事情的简化,当然如果这是一个更简单的方法,但为什么ruby 1.9.x解析器在1.8.x中工作的东西有问题并且看起来很简单?
(rdb:2) struct = Struct.new(:foo, :bar).new
(rdb:2) p struct.send( ( "foo".to_s +'=') , "VALUE")
NoMethodError Exception: undefined method `+@' for "=":String
什么?但这很好用:
(rdb:2) struct.send( ("foo".to_s) +'=') , "VALUE")
等等啊,等等,我想现在'+'运算符和第二个值之间需要一个空格?
(rdb:2) p struct.send( ( "foo".to_s + '=') , "VALUE")
到底是什么? Ruby 1.8.x现在很好用。等等,ruby 1.9.x支持一元前缀运算符或其他东西,如果我不留空格,那就说字符串没有一元前缀运算符“+”?
HUH?任何人都可以解决这个问题吗?
答案 0 :(得分:3)
Ruby 1.8.7还支持一元+
,并为+'='
提供了相同的错误。
我会假设解析逻辑中发生了一些变化,并且+'='
在表达式中被解析为一元加号。我不会认为这是一个错误。