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でした。まあまあですか?
「パソコン・インターネット」カテゴリの記事
- USBを挿さないでiPadを充電したい(2025.04.18)
- 仕事用ディスプレイを買い換えた(2022.02.14)
- Windows 10にインストールしていた Adobe Acrobat 9が消えた(2022.01.15)
- Scansnapを買い換えた(2021.02.02)
- ケータイをiPhoneに戻した(2020.11.09)
Comments