This commit is contained in:
Rikuoh Tsujitani 2024-03-26 21:28:26 +09:00
parent 89838f97a0
commit b59b0e786c
Signed by: riq0h
GPG key ID: 010F09DEA298C717

View file

@ -225,10 +225,41 @@ selfキーワードインスタンス自身を表すキーワード。Javaに
なにひとつ定義していないクラスでもObjectクラスを自動的に継承しているため関連するメソッドを呼び出せる
270ページから
## 3/26
superクラスでスーパークラスの処理を呼ぶsuper(引数)で呼び出せる。引数の数が同じだった場合は引数なしですべて引き渡すことができる。
オーバーライド:サブクラスではスーパークラスと同名のメソッドを定義することで、スーパークラスの処理を上書きできる
アスタリスク引数の意図superメソッドに引数をそのまま全部渡したい。このメソッドでは引数を使わないがsuperメソッドで必要になるので渡したい、という意味
意図2余分に渡された引数を無視したい。メソッド内でsuperキーワードが使われていない場合は「余分に渡された引数を無視する」という意味になる
publicメソッドクラスの外部からでも自由に呼び出せるメソッド。initialize以外のインスタンスメソッドはデフォルトでpublic
privateメソッド外部に公開されないメソッド。すなわちクラスの内部でのみ使えるメソッドのこと。
Rubyのprivateメソッドサブクラスからは呼び出せる。オーバーライドもできる。
Rubyのprivateメソッド2クラスメソッドはprivateキーワードの下に定義してもprivateにならない。class << selfの構文を使うと回避できる
privateに引数を渡すprivate :foo, :bar の形式で引数を渡すと既存のメソッドがprivateメソッドになる
メソッド定義と同時にprivateメソッドにするprivate def fooの形式で行う
protectedメソッド外部に公開したくないが同じクラスやサブクラスの中ではレシーバ付きで呼び出したい時に使う
定数をクラスの外部から直接参照する:クラス名::定数名
Rubyの定数は再代入可能確実に防ぎたい場合はfreezeメソッドを使う
クラスインスタンス変数:インスタンスの作成とは無関係にクラス自身が保持しているデータ(クラス自身のインスタンス変数)
クラス変数アットマークを2つ重ねた変数。同一の変数として代入・参照可能。
グローバル変数:$マークから変数名を始める。プログラムのどこからでも参照できる。
エイリアスメソッドの作成alias 新しい名前 元の名前で定義できる
メソッドの削除undef 削除するメソッドの名前で定義を削除できる
入れ子になったクラスの定義:クラスの内部に別のクラスを定義することもできる。外側のクラス::内側のクラスで参照できる。
クラスに可視性を設定することは通常できないしたい場合はprivate_constantを使う
演算子もメソッドとして再定義できる:たとえば==を使った比較を直感的にしたい時などに使える
equal?object_idが等しい場合にtrueを返す。つまりまったく同じインスタンスかどうかを判断する場合に使う
eql?==より厳格な等値判定を行う。1==1.0はtrueだが1.eql?(1.0)はfalse。主に2つのオブジェクトがハッシュのキーとして同じかどうかを判定することに用いられる
オープンクラス変更に対してオープンなクラスのこと。Railsではこの概念を活用して様々なメソッドを追加している
モンキーパッチ:既存のメソッドを上書きして挙動を変更する
特異メソッドオブジェクト単位で挙動を変える。def alice.shuffleなどの形式で記述するとaliceのオブジェクトのみがshuffleメソッドを持つ
クラスメソッドの正体:実際は特定のクラスの特異メソッド
ダックタイピング:オブジェクトのクラスがなんであろうとメソッドが呼び出せれば良しとするプログラミングスタイルのこと。もしそれがアヒルのように歩き、アヒルのように鳴くのなら、それはアヒルであるということ。
動的型付け言語における突然のエラーを防止する方法:あえて同じ名前のメソッドを定義してわかりやすいエラーを起こさせる
respond+to?:そのオブジェクトに対して特定のメソッドが呼び出し可能か確認できる
オーバーロード静的型付け言語において引数のデータ型や個数の違いに応じて同じ名前のメソッドを複数定義できる機能。動的型付け言語のRubyにはない考え方。代わりにis_a?メソッドで引数のクラスを確認したり、to_iメソッドで数値に変換したりなどして同様の仕組みを実現する
316ページから
## 3/27