Rubyの会18回「継承・まとめ」
ibに再ハマりしました…!😊
今回の進捗です。
agenda
1. 継承( .class , superclass )
.class
string .new(" ") と同じ意味。
class
メソッドは、レシーバのオブジェクトがどのクラスのインスタンスであるかを調べます。戻り値はクラス(Class
オブジェクト)です。
.superclass
superclass
メソッドは、クラスの親クラスを返します。戻り値はクラス(Class
オブジェクト)です。親クラスがないときは
nil
を返します。Ruby 1.8では、Object
クラスには親はありません。
superclass (Class) - Rubyリファレンス
2.palindrome? メゾット
>> s.palindrome? # Wordが鏡文字かどうかを調べるメソッド
回文。文字列を前から読んでも後ろから読んでも同じ場合かを調べる。
palindrome?
メソッドを追加しました。このように、Ruby のクラスは実行時に編集することができます。これは Ruby の強力な特性です。Ruby のクラス階層とシングルトンについて理解できたところで、次は
self
に話題を移します。上記のpalindrome?
メソッドの定義の中で、self
が使用されていることに注目してください。
3.リテラルコントラスト
意味 :暗黙で作り出す。
>> s = "foobar" # ダブルクォートは実は文字列のコンストラクタ => "foobar" >> s.class => String
上のコードを書くと、、、
>> s = String.new("foobar") # 文字列の名前付きコンストラクタ
=> "foobar"
>> s.class
=> String
>> s == "foobar"
=> true
上記のように暗黙で作成される。
4. インスタンスメゾット
newメゾット(クラスメゾット)で呼び出した結果のこと。
newメゾットから呼び出されることを「クラスメゾット」という。
このことからインスタンスから呼び出されるメゾットのことを「インスタンスメゾット」という。
例 .length
5.クラスの継承
superclass クラス断層を調べることができる。
>> s = String.new("foobar")=> "foobar" >> s.class # 変数sのクラスを調べる => String >> s.class.superclass # Stringクラスの親クラスを調べる => Object >> s.class.superclass.superclass # Ruby 1.9 からBasicObjectという新しい基底クラスが導入された => BasicObject >> s.class.superclass.superclass.superclass => nil
単語の会文化を確認できる。(self.でも省略できる)
self == self.reverse または self == reverse
省略法でもできる
6.4章のまとめ
- Rubyは文字列を扱うためのメソッドを多数持っている
- Rubyの世界では、すべてがオブジェクトである
- Rubyでは
def
というキーワードを使ってメソッドを定義する - Rubyでは
class
というキーワードを使ってクラスを定義する - Railsのビューでは静的なHTMLと埋め込みRuby(ERb)が使える
- Rubyの組み込みクラスには配列、範囲、ハッシュなどがある
- Rubyのブロックは (他の似た機能と比べ) 柔軟な機能で、添え字を使ったデータ構造よりも自然にイテレーションができる
- シンボルとはラベルである。追加的な構造を持たない (代入などができない) 文字列みたいなもの。
- Rubyではオブジェクトを継承できる
- Rubyでは組み込みクラスですら内部を見たり修正したりできる
- 「“deified”」という単語は回文である