« 今日のひとこと(2/4) | Main | 読者も大人になりまして »

Ruby検定 答え合わせ

さて、答え合わせ

第1問

正解でした。Rubyがnilとfalse以外は正になるというのは、スクリプト全体でグローバルというか、いわゆるシングルトン的な扱いをする変数を使うときに便利ですよね。

とりあえず、hogeってハッシュに入った配列に次々にpushしておきたいときなんかに、そのキーに対応する配列がすでに作られているかわからないようなコードの場合に

hoge[name] = Array.new if hoge[name]

とか書いちゃう。

第2問

間違いました。予約語なんて意識したことないです。thisとgotoに特別な意味がないことはわかりますが、superってなんでしたっけ?他のも別にその名前のメソッド作れたりするような・・・

第3問

正解しました。!とnilがくっついてていいのかわからなかったんですが、!は演算子だからOKなのね?

第4問

正解しました。特に悩むことなし

第5問

間違いました。よくみたら、どっちもtrueのときにしかいかない(笑)

第6問

正解しました。これも悩むところ無し

第7問

間違いました・・・というか、これが1.9から変わるんじゃなかったっけか

第8問

正解しました。これも迷うことはなかったところです。

第9問

正解しました。変数とオブジェクトの関係がわかってますか?って奴ですね

第10問

正解しました。でも勘です(笑)

これは、オブジェクトが同一か同値かという話ですな。

Rubyでは同じか否を比較するのに

  • ===
  • ==
  • eql?
  • equal?

あたりが使われることになりますが、通常は==で問題ないはずです。

で、これ、Javaと違うから混乱するんですよねー

第11問

正解しました。これは普段から書いてれば迷う事はないでしょう。

第12問

正解しました。RangeはRubyを使っていて嬉しいクラスのひとつですね。とても便利です

第13問

間違いました。というか、BとC、どちらも正しいので悩んでいたら両方正解でした。ええーっ。この問題は「すべて選べ」って書いておかないとだめでしょー

第14問

正解しました。なぜかString#reverse再登場

第15問

正解しました。でも悩みました。(1..10)と(1...10)の違いは両端を含むかどうかだと勘違いしてました。右端だけかー

あと、解説にいちゃもんですが、単純に10回実行させたい場合は

10.times{ ... }

が普通だと思います。

第16問

間違いました。つか、勘違いです。代入が再定義できたら、ワケわからん!

逆に<=>の再定義は普通ですね。これをちゃんと定義しておくとsortが使えるようになるので嬉しいのです。自分でクラスを作って、後々よく使いまわせそうと思ったら

* ===
* each
* sort
* inspect
* to_s

あたりをちゃんと定義しておくとハッピーかも

第17問

正解しました。でも、配列の引き算ってどうなる?って聞かれると思い出すんですが、これで済むことに気がつかずに

ary1.delete_if{|i| ary2.include? i}

とか書いちゃうことがよくあります。 

第18問

正解しました。これも引き算と同じで、足してからuniqしちゃいそうです。

第19問

正解しました。でも、なんかトリビアル

第20問

間違いました。えー、requireぐらいしとこうよ。

で、和暦ってパースできるのかな?

>> require 'time'
=> true
>> t1 = Time.parse("S54.7.16 12:00")
=> Mon Jul 16 12:00:00 +0900 1979

うお、普通にできとる。


 

というわけで、正解は14/20でした。まあまあですか?

|

« 今日のひとこと(2/4) | Main | 読者も大人になりまして »

パソコン・インターネット」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference Ruby検定 答え合わせ:

« 今日のひとこと(2/4) | Main | 読者も大人になりまして »