Ruby Goldへの道 day8
以下のサイトでruby gold取得に向けて毎日一回Goldチャレンジを行い間違えた問題を簡単にまとめる。 rex.libertyfish.co.jp
8日目 得点 78点/100点中
今日も間違えた中から数問深掘りする
- ネストされたクラス内の定数の参照
class C p Module.nesting #=> [C] CONST = "Hello, class C" end module M class C p Module.nesting #=> [M::C, M] CONST = "Hello, module M class C" end end p C::CONST #=> "Hello, class C" p M::C::CONST #=> "Hello, module M class C"
- Module#refineは無名のモジュールをを作成する
- ブロック内のselfは無名モジュールになる
- クラスメソッドを再定義するには
singleton_class
を利用するself.メソッド
としない
class C def self.m1 200 end end module R refine C.singleton_class do def m1 # Cクラスのm1メソッドを再定義する # singleton_classがなければそのまま200が出力される 100 end end end using R puts C.m1 #=> 100
- 演算と戻り値のクラス
- 戻り値はRationalとFloatとComplex
- Rational < Float < Complexで覚えるといい
- Date同士の演算はRation
- Time同士の演算はFloat
- Datetime同士の演算はRational
val = 1 + 1/2r puts val.class #=> Rational puts 1.class #=> Integer # puts 1/2r.class #=> float = 1/3.to_f puts float.class #=> Float complex = 3.to_c puts complex.class #=> Complex val2 = float + complex puts val2.class #=> Complex