Rubyのインスタンスメソッドについての疑問.以下

Writer: admin Type: 観葉植物 Date: 2018-12-14 00:00
Rubyのインスタンスメソッドについての疑問.以下のようなクラス定義があったとしてclass Aaadef name1(name)@name = nameenddef name2@nameendendこの場合obj = Aaa .newでインスタンスを生成した場合obj.name = "aaaa"でインスタンスメソッド@nameにオブジェクトが代入されるそうですが、なぜ代入されるのでしょうか?メソッドに代入演算子は使えたのでしょうか?クラス名が定数であるように、メソッド名は変数なのでしょうか?それだと話が通るのですが...。共感した0###Ruby のインスタンス変数は eval 系のメソッドを使わないと外から直接あつかえないので間違いです。class Aaa  attr_accessor :nameendのように attr_accessor や attr_reader attr_writer でインスタンス変数の読み書きメソッドを自動生成してるときだけインスタンス変数を直接読み書きしてるように見えます。attr_accessor :nameによってdef name  @nameenddef name=(name)  @name = nameendという感じのメソッドができるのでobj = Aaa.newobj.name = 'aaaa'p obj.nameのようにできます。メソッド名の最後に = がついたメソッドはひとつの引数の場合= の前後に空白が置けるように特別扱いされます。ナイス0
###そうでしたか。回答していただきありがとうございました。

 

TAG