ハマりかけてます。
とりあえず整理するため書いていく!
[【Ruby】クラスとかインスタンスについて改めて学習してみた]
(https://qiita.com/ksk_diffeasy/items/734b4961e9e6c7480d33)
クラス
= 初期処理 + インスタンス生成 + インスタンスメソッド定義・実行
ちなみにクラスの中は 初期処理 と インスタンスメソッド定義 が含まれていれば大丈夫!
...と思ったが~~attr_accessorというメソッドがないとクラスの外でインスタンス生成ができないらしい~~
(scivolaさんがコメントにて間違いを指摘してくださりました。
attr_accessor
はメソッドを定義するメソッドとのこと)
[attr_accessor (Module)]
(https://ref.xaio.jp/ruby/classes/module/attr_accessor)
詳しくは
[attr_accessorメソッドの使い方]
(https://qiita.com/pi_ko/items/f4a13ea05013f48d52f9)
↓これが一番理解しやすかった↓
[アクセスメソッド(アクセサメソッド )について(Ruby)]
(https://www.ryotaku.com/entry/2019/08/01/100814)
より引用↓
class Pokemon
def initialize(name)
@name = name
end
def getName
@name
end
def setName=(changed_name)
@name = changed_name
end
end
#クラス外部から値の参照が可能
pokemon = Pokemon.new('ピカチュウ')
puts pokemon.getName
=> ピカチュウ
#クラス外部から値の更新が可能
pokemon.setName = 'ギエピー'
puts pokemon.getName
=> ギエピー
これをattr_accessor
で書き換えると
class Pokemon
attr_reader :name
def initialize(name)
@name = name
end
end
pokemon = Pokemon.new('ピカチュウ')
puts pokemon.name
=> ピカチュウ
やっと理解できた...!
引数処理に関して掘り下げると
[ruby引数処理に使えるテクニック]
(https://qiita.com/metheglin/items/306e81c95f8a5cdea296)
クラスについてもっと知りたい!
→【まとめ】インスタンス変数、クラス変数、クラスインスタンス変数
##所感
アウトプット前提で学習すると効率よくインプットできますね!
個人的にはもっと質の高い記事を投稿したいが、学習ログという定に甘えてます