我正在开发一个RoR项目,我想知道是否可以使用end
作为方法名称。它似乎工作正常,但我想知道这种方法将来是否会带来任何问题。我试过了它的确有效:
class Dany
def end
puts 'Hola'
end
end
这是输出:
Dany.new.end # => Hola
答案 0 :(得分:8)
Ruby让你这样做,但你会遇到各种各样的问题。
# end.rb
class Dany
def end
puts "Hola"
end
def other
end # should puts Hola
end
end
相反,你会得到
end.rb:10:语法错误,意外的keyword_end,期待输入结束
底线:不要这样做。不要使用任何keywords作为方法名称。
答案 1 :(得分:3)
使用关键字作为方法名称并不是一个好主意,但只要您将令牌消歧作为方法调用,就可以使用它。但这不实用。
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