我可以在这样的实例上定义一个方法:
object = Object.new
def object.foo
puts "5"
end尝试类似于Fixnum的方法不起作用:
def 3.foo
puts "3"
end
def 3.foo
^
(irb):7: syntax error, unexpected keyword_end, expecting end-of-input原因是什么?
我知道这是我不该做的事。我只是想知道为什么这不像我预料的那样起作用。
发布于 2017-07-09 21:38:28
这里有两件事在起作用。
有一件事是,Fixnums不能有单例方法。但是,我们甚至还没有到那个地步,因为您的代码有一个语法错误,因此Ruby一开始甚至没有尝试运行它。
第二件事是Ruby的语法很复杂,因此有很多暗角的情况。您似乎已经找到了一种方法,在这种情况下,.符号的不同用法意味着小数分隔符和方法选择器以神秘的方式相互冲突。
当然,这实际上并不是什么大问题,因为正如我前面提到的,Fixnums无论如何不可能有单例类:
object = 3
def object.foo
puts "3"
end
# TypeError: can't define singletonhttps://stackoverflow.com/questions/45000850
复制相似问题