1

私は RoR プロジェクトに取り組んでおりend、メソッド名として使用できるかどうかを知りたいです。うまくいくようですが、この方法で将来問題が発生するかどうかを知りたいです。私は試してみましたが、うまくいきます:

class Dany
  def end
    puts 'Hola'
  end
end

これは出力です:

Dany.new.end # => Hola
4

2 に答える 2

8

Ruby ではこれを行うことができますが、あらゆる種類の問題に遭遇することになります。

# end.rb
class Dany

  def end
    puts "Hola"
  end

  def other
    end  # should puts Hola
  end
end

代わりに、次のようになります。

end.rb:10: 構文エラー、予期しない keyword_end、入力の終わりが必要です


結論:これをしないでください。メソッド名としてキーワードを使用しないでください。

于 2013-08-24T21:53:13.843 に答える
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
于 2013-08-24T21:59:06.067 に答える