【Ruby】クラスの基礎
ゲッターとセッター
[attr_accessor]を使用しないと、インスタンス精製後に外部アクセスが行えない?
[@type]などのようにフィールド変数を定義すれば 、[attr_accessor]を使用しないくてもよいが、[self.type]の様な記述をしたい場合は[attr_accessor]の指定が必須
参照
▽【Ruby】 attr_accessorメソッド初心者入門書~使い方と必要な理由を理解しよう
https://pikawaka.com/ruby/attr_accessor
selfと@の違い
self.nameとした場合、attr_accessorで作成されたメソッドを呼び出す
@nameとした場合は、attr_accessorが裏で保管しているインスタンス変数を読みに行く
attr_accessorの場合はどちらも同じだが、アクセサがなくインスタンス変数しかない場合、@nameでのアクセスしかできない。
RailsのActiveRecordでは、@nameのような変数に格納しているわけではないので、nameというメソッド形式のアクセスが必要となる
@ を使う場合、attr_accessor の記述は書かなくても正常に動作する
# オブジェクトのメソッド(処理)
def attack(character_name)
puts "#{self.name}が~#{@power}ダメージを与えた!""
end
[self.name]を[@name]に変更すると出力されなくなる
[@power]は問題なく出力される
参照
▽【Rails】selfと@の使い分けはどうすればいいでしょうか?
https://teratail.com/questions/202474
静的メソッド定義
1つの場合はself.start
def self.start
/* 処理 */
end
複数の場合はself.start
class << self
def funcA()
/* 処理 */
end
def funcB()
/* 処理 */
end
end