単純なオブジェクトがあるとしましょう。受け入れたいattr_accessor
属性の s があり、オブジェクトのハッシュで初期化できるようにしたい:
class Example
attr_accessor :foo, :bar
def initialize( attributes = {} )
attributes.each do |k,v|
...
end
end
end
send
上記の attributes.each ブロックでは、次のように を使用する方がよいでしょうか。
send "#{k}=", v
またはinstance_variable_set
次のように使用します。
instance_variable_set "@#{k}".to_sym, v
...またはまったく別のことをするために?
私が考えることができる違いは次のとおりです。
send
ある時点でいずれかをattr_accessors
セッターメソッドに置き換えた場合、使用はより一貫性があります。予期しない値が渡された場合、使用
send
すると発生しますNoMethodError
send
私はこれらの理由で傾いています - 私は実際にNoMethodError
は、偽の初期データのために提起される可能性が好きです。ただし、ここで見落としている他の要因、特にパフォーマンスとセキュリティの考慮事項はありますか?
洞察に感謝します。ありがとう!