【发布时间】:2012-03-25 23:03:10
【问题描述】:
为什么 "A".send('!='.to_sym, "B") 在 Ruby 1.8.7 中会引发 NoMethodError 而 "A" != "B" 不会 - 以及 Object.send 的正确语法是什么样的?
【问题讨论】:
为什么 "A".send('!='.to_sym, "B") 在 Ruby 1.8.7 中会引发 NoMethodError 而 "A" != "B" 不会 - 以及 Object.send 的正确语法是什么样的?
【问题讨论】:
由于问题的后半部分还没有回答:
'A'.send(:==, 'B').send(:!) # Ruby 1.9
!'A'.send(:==, 'B') # Ruby 1.8
【讨论】:
!= 不是 ruby 1.8 中的方法它是硬连线的否定调用 ==
【讨论】:
rb_define_method(rb_cBasicObject, "!=", rb_obj_not_equal, 1); 定义
def !=(other) self == other ? false : true end。