From b59b0e786ce4dc2d1a3e35543ba53a4c26cc865c Mon Sep 17 00:00:00 2001 From: Rikuoh Date: Tue, 26 Mar 2024 21:28:26 +0900 Subject: [PATCH] 3/26 --- cherry.txt | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/cherry.txt b/cherry.txt index 571e342..cb4966d 100644 --- a/cherry.txt +++ b/cherry.txt @@ -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