PerlerのRuby日記

Rubyとか

やったーRuby技術者認定Gold受かったよー\(^o^)/

一週間くらい公式教科書読んで、受けてきました。

75%で合格のところを、76%でした。なんというボーダー。

あと1問間違ってたら落ちてた。

とはいえ合格は合格なので、ありがたく履歴書の資格欄などに書かせていただこうと思います。


で、この資格試験なんだけど、PCに答え入れて結果が瞬時に分かって、超システマティックなのはいいんですが、答え合わせがなかった。/(^o^)\

なのでまだ覚えている悩んだ系の問題を復習しておく。

クラスメソッドの継承

クラスメソッドって継承できたっけ?

class Hoge
  class << self
    def hoge
      "hoge!!!!!"                                                                                                       
    end 
  end 
end

class Fuga < Hoge
end

Hoge.hoge #=> "hoge!!!!!"

Fuga.hoge #=> "hoge!!!!!"

できた。クラスメソッドは継承される!!!

superはincludeされてるモジュールは呼ばれる?

superclassでは出てこないから、呼ばれないと思ってたけど…。

module M
  def hoge
    puts "module M"
    super
  end
end

class Hoge
  def hoge
    puts "class Hoge"
  end
end

class Fuga < Hoge
  include M                                                                                                             
  def hoge
    puts "class Fuga"
    super
  end
end

Fuga.new.hoge
#=> class Fuga
#=> module M
#=> class Hoge

げげ呼ばれた…。モジュールもsuperの対象になるのか…。この辺で3問くらいミスった気がするな。

クラス内で別クラスのクラスメソッドが定義できる?

class Hoge
  def Object.const_missing(name)
    p "Missing const name is #{name}"
  end
end

A #=> "Missing const name is A"
Hoge::A #=> "Missing const name is A"

おおやっぱりできるのかー。いつでもどこでも再オープン。

privateは子クラスのsuperで呼べる?

class Hoge
  private
  def priv
    puts "This is private!"
  end
end

class Fuga < Hoge
  def priv
    super
  end
end

Fuga.new.priv #=> "This is private!"

うおお呼べるんだ。super自体がself.を省略した形でもあるし?

Objectクラスで定数を定義すると、トップレベルで定義したのと同じ?

ベタに書くのと同じ?

HOGE = 123

class Object
  HOGE = 234
end

puts HOGE
f.rb:4: warning: already initialized constant HOGE
234

同じでした。

インスタンスメソッドとクラスメソッドのインスタンス変数のスコープ

class Hoge
  @hoge = 123
  def hoge
    @hoge = 234
  end
  class << Hoge
    @hoge = 345
    def hoge
      @hoge
    end
  end
end

Hoge.new.hoge #=> 234
Hoge.hoge #=> 123
class << Hoge
  @hoge
end #=> 345

hoge = Hoge.new
class << hoge
  @hoge
end #=> nil

うへえ、、、なんというバリエーション。こんなん本当に使うのか?


試験内容以外で気になったところ

  • ¥15,000はやっぱり高い…。絶対に負けられない戦いがここにある。
  • 公式教科書よりなんかだいぶ難しかった印象。
  • マウスのスクロールが問題を表示しただけでは動かなくて、一度画面をクリックしないと反応してくれなかった。
    • 選択肢をクリックして回答する試験なので、若干気をつかった。
  • シンタックスハイライトがなくて、色づけって重要だなーと思った。
  • インデントが半角スペース1個だった。狭い。
  • 行番号つけてくれるのはいいんだけど、桁が左寄せなもんだから、10行目から右に1個ずれるという見にくい仕様だった。
    • インデントかと思ったら10行目だったというオチ