ztbuz@dev

人生に絶望しているZが、それでも技術を身につけようと必死になるブログ

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"

おわりに

Rubyは書き方がいろいろあって、PHPすらまともに書いたことのない私は心底絶望しています。。。