Ruby Goldへの道 day7
以下のサイトでruby gold取得に向けて毎日一回Goldチャレンジを行い間違えた問題を簡単にまとめる。 rex.libertyfish.co.jp
7日目 得点 76点/100点中
初の合格点。この調子で理解を深めていこう。 今日も間違えた中から数問深掘りする
- aliasとalias_method
- alias 新メソッド 旧メソッド の形で記述する。" , " は不要。
- alias_method :新メソッド, 旧メソッド の形で記述する。 " , " は必要。シンボル 型で記述できる
class String # aliasの場合 新メソッド 旧メソッド の形で記述する , はいらない alias hoge reverse # alias_methodの場合 :新メソッド, :旧メソッド の形で記述する alias_method :hoge, :reverse end p "12345".hoge
- prepend
- モジュールのメソッドを特異メソッドとして追加する
- メソッドの探索はselfより前に行われる
- 複数個記述した場合は左から探索される
module M1 end module M2 end class C prepend M1, M2 # selfより先に探索される。左から順に探索される。 end p C.ancestors #=> [M1, M2, C, Object, Kernel, BasicObject]
- includeはmoduleのインスタンスメソッドをMix-inする
- C.methodsはCの特異メソッドを表示する
module M def self.class_m "M.class_m" end end class C include M # MモジュールのインスタンスメソッドをMix-in end p C.methods.include? :class_m #=> false # Cにはclass_mは追加されない