独自のライブラリを開発する過程で、一般的なイディオムを理解するために、Github でさまざまな Ruby ライブラリを読んでいます。私が参照している 1 つのライブラリ (ここにあります) は、私が「添付されていない送信メソッド」と呼ぶものを活用しています。コードは次のとおりです。
module AngellistApi
class API
attr_accessor *Configuration::VALID_OPTIONS_KEYS
# Creates a new API
def initialize(options={})
options = AngellistApi.options.merge(options)
Configuration::VALID_OPTIONS_KEYS.each do |key|
send("#{key}=", options[key])
end
end
end
end
Ruby の send メソッドに関してオンラインで見つけることができるすべてのドキュメントは、文字列またはシンボルを介してオブジェクトのメソッドを呼び出す方法として説明しています。ただし、すべての例では send メソッドがオブジェクトにアタッチされています。
object.send(:method_name, argument1)
オブジェクトにアタッチされていない場合はどうなりますか? この場合、内部で呼び出されたクラスのメソッドを呼び出していますか? 誰かが私のためにこのコードを説明できますか? :)