メソッド引数リストにインスタンス変数名を指定するCoffeeScript機能と同様のルビー動作を実装する予定はありますか? Ruby:インスタンス変数をメソッドの引数として自動的に設定しますか?
class User
def initialize(@name, age)
# @name is set implicitly, but @age isn't.
# the local variable "age" will be set, just like it currently works.
end
end
と同じように、私はこの質問を認識してよ:in Ruby can I automatically populate instance variables somehow in the initialize method?が、(私自身を含む)すべてのソリューションは、ルビーのシンプル哲学を合わせていないようです。
そして、この現象を起こすことには何らかの欠点がありますか?
UPDATE
は、その理由の一つは、(自分を繰り返さない)Rubyコミュニティの理念DRYです。同じ名前のインスタンス変数に代入したいので、引数変数の名前を繰り返す必要があることがよくあります。
def initialize(name)
# not DRY
@name = name
end
私が考えることができる1つの欠点は、体がないと方法が何もしていないように見えるかもしれないということです。あなたがすばやくスキャンしている場合、これはノーオペレーションのように見えるかもしれません。しかし、私は時間が与えられたと思う、我々は適応することができます。
もう1つの欠点:身体の他のインスタンス変数を設定していて、すべての割り当てを最初に置くと、読み込みを試みると、そこに割り当てが発生していることを知るために、引数リストしかし、これは、定数やメソッド呼び出しを見て、その定義にジャンプしなければならないことよりも、これが難しいとは思わない。
# notice: instance var assignments are happening in 2 places!
def initialize(@name)
@errors = []
end
この回答ありがとうございます。それは間違いなくもっと価値のある仕事のようです。 :) – hrdwdmrbl
@ジャッククックあなたは実際にセットアップを一度行うだけです。あなたのクラスでは、 'enable_for'と' slurp_args'を呼び出すだけです。 – Kelvin