読者です 読者をやめる 読者になる 読者になる

キリンめも

記事を書いています #rails #swift #JS #UE4

Rubyの会18回「継承・まとめ」

ibに再ハマりしました…!😊

 

今回の進捗です。

f:id:geta206:20160816154628p:plain

 

agenda

  1. 継承( .class , superclass )
  2. palindrome?メゾット
  3. リテラルコントラスト
  4. コントローラクラス
  5. クラスの継承
  6. 4章のまとめ

 

1. 継承( .class , superclass ) 

 .class 

string .new(" ") と同じ意味。

obj.class

classメソッドは、レシーバのオブジェクトがどのクラスのインスタンスであるかを調べます。戻り値はクラス(Classオブジェクト)です。

typeメソッドはRuby 1.9で廃止されました。(classの別名)

message = "hello, world"
puts message.class
number = 123
puts number.class

class (Object) - Rubyリファレンス

 

.superclass

 

klass.superclass

superclassメソッドは、クラスの親クラスを返します。戻り値はクラス(Classオブジェクト)です。

p Fixnum.superclass
p String.superclass
 
class MyString < String
end
p MyString.superclass
Integer
Object
String

親クラスがないときはnilを返します。Ruby 1.8では、Objectクラスには親はありません。

p Object.superclass
nil   (Ruby 1.8の場合)

  

superclass (Class) - Rubyリファレンス

 

2.palindrome? メゾット

>> s.palindrome?            # Wordが鏡文字かどうかを調べるメソッド

回文。文字列を前から読んでも後ろから読んでも同じ場合かを調べる。

 

palindrome? メソッドを追加しました。このように、Ruby のクラスは実行時に編集することができます。これは Ruby の強力な特性です。

Ruby のクラス階層とシングルトンについて理解できたところで、次は self に話題を移します。上記の palindrome? メソッドの定義の中で、self が使用されていることに注目してください。

誤解されている 6 つの Ruby の機能の真相を知る

 

 

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”」という単語は回文である