我正在做一个 RoR 项目,我想知道我是否可以end
用作方法名称。它似乎工作正常,但我想知道这种方法将来是否会带来任何问题。我试过了,它有效:
class Dany
def end
puts 'Hola'
end
end
这是输出:
Dany.new.end # => Hola
我正在做一个 RoR 项目,我想知道我是否可以end
用作方法名称。它似乎工作正常,但我想知道这种方法将来是否会带来任何问题。我试过了,它有效:
class Dany
def end
puts 'Hola'
end
end
这是输出:
Dany.new.end # => Hola
Ruby 让你这样做,但你会遇到各种各样的问题。
# end.rb
class Dany
def end
puts "Hola"
end
def other
end # should puts Hola
end
end
相反,你会得到
end.rb:10:语法错误,意外的keyword_end,期待输入结束
底线:不要这样做。不要使用任何关键字作为方法名称。
将关键字用作方法名并不是一个好主意,但只要将标记消除歧义作为方法调用,就可以使用它。但这并不实用。
Dany.new.instance_eval{self.end} # => Hola
Dany.new.send(:end) # => Hola
Dany.new.method(:end).call # => Hola
Dany.new.instance_eval{end} # => syntax error, unexpected keyword_end
通常的消歧使用()
似乎不适用于这种情况,使其变得复杂。
Dany.new.instance_eval{end()} # => syntax error, unexpected keyword_end