私は 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