Closed Fendo181 closed 7 years ago
(1)
1から10の範囲オブジェクトを生成するリテラルコンストラクタは何でしたか? (復習です)
irb(main):001:0> (1..10).class => Range
(2)
今度はRangeクラスとnewメソッドを使って、1から10の範囲オブジェクトを作ってみてください。ヒント: newメソッドに2つの引数を渡す必要があります
irb(main):007:0> num = Range.new(1,10) => 1..10
(3)
比較演算子==を使って、上記2つの課題で作ったそれぞれのオブジェクトが同じであることを確認してみてください。
p (1..2) == Range.new(1,2) true => true
Rangeクラスの継承階層を調べてみてください。同様にして、HashとSymbolクラスの継承階層も調べてみてください。
#Range クラス irb(main):002:0> (1..10).class => Range irb(main):003:0> (1..10).class.superclass => Object #Hashクラス irb(main):008:0> a = {a:"endo"} => {:a=>"endo"} irb(main):009:0> a.class => Hash irb(main):010:0> a.class.superclass => Object #Symbolクラス user = {name: "Takahashi",city:"tokyp"} => {:name=>"Takahashi", :city=>"tokyp"} irb(main):012:0> user[:name].class => String irb(main):013:0> user[:name].class.superclass => Object irb(main):014:0>
リスト 4.15にあるself.reverseのselfを省略し、reverseと書いてもうまく動くことを確認してみてください。
うまく行った。
# String クラスを継承する。 class World < String def palindrome? # selfはオブジェクト自身 self == reverse end end w = World.new("level") puts w.palindrome? # String puts w.length
4.4.1
(1)
(2)
(3)
4.4.
(1)
(2)
うまく行った。