Hatena::ブログ(Diary)

【旧】PerlerのRuby日記->はてなブログに移行しました

2012年12月26日

[]やったー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行目だったというオチ

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/rightgo09_ruby/20121226/p1