Rubyのイコールを用いた要素代入関数の書き方
Rubyでは、関数名にイコールを使えると風のうわさで聞きました。 その書き方についてのメモです。
要素代入関数とは
コード例
以下のようなコードがあるとします。
この中のname=
を要素代入関数というらしいです。
要素代入関数とは、簡単にいうと「代入演算子(=
)を用いて引数を渡せる関数」だと思います。
たぶん……。
class Foo
def name=(name)
@name = name
end
def name
@name
end
end
代入する
上のコード例について、インスタンスの生成〜代入までは以下のように書きます。
こうすると、@name
というインスタンス変数が生成されます。
foo = Foo.new
foo.name = 'foo'
インスタンス変数を表示する
で、こうすると、インスタンス変数が表示される、という訳です。
同じname
という名前を持つ関数なのに、=
の有無で違うメソッドが呼び出されるんですね(当たり前)。
p foo.name # => "foo"