ruby 1.9.x,奇怪的解析,发生了什么?

时间:2011-10-27 21:36:13

标签: ruby ruby-1.9

我甚至不知道给这个人提供什么标题。有人可以向我解释这里到底发生了什么事吗?这是我正在做的事情的简化,当然如果这是一个更简单的方法,但为什么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?任何人都可以解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

Ruby 1.8.7还支持一元+,并为+'='提供了相同的错误。

我会假设解析逻辑中发生了一些变化,并且+'='在表达式中被解析为一元加号。我不会认为这是一个错误。