0

こんにちは、私は非常に初心者です。

attr_accessor がどのように機能するかを理解していると思います (以下)。「セッター」はname=(name)メソッドです。そして、そのメソッドが代入と同等であることを知っています: name = "john"。「=」は、引数を受け取り、その引数を呼び出すオブジェクトにその引数を割り当てるメソッドであるためです。(ただし、「名前」がオブジェクトに割り当てられているため、オブジェクトと見なす方法がわかりません)

私の質問は、メソッドを呼び出す変数をメソッド名として割り当てるにはどうすればよいですか? 何かが足りない気がする..

class Person
  def name
    @name
  end

  def name=(name)
    @name = name
  end
end
4

1 に答える 1

1

私の質問は、メソッドを呼び出す変数をメソッド名として割り当てるにはどうすればよいですか? 何かが足りない気がする..

あなたはそうしない。このコードでは

def name=(name)
  @name = name
end

name= nameメソッドを呼び出す変数ではありません=。メソッドの名前name=.

編集:

上記のコード スニペットdefでは、終了とペアになっendた がメソッド定義を構成します。

def method_name(param1, param2)
  # method body
end

同じ行defには、メソッド名、オプションの括弧、およびパラメーター リストのみを含めることができます。定義により、その行に「メソッドを呼び出す変数」を持つことは違法です。したがって、コードname=にはメソッド名があります。

于 2014-01-05T09:45:56.473 に答える