Ruby認定技術者のSilverに受かったので諸々の報告
Ruby認定技術者のSilverに合格してきました!
得点は、92点(100点中)。
勉強の仕方については他のブログ等で多数解説されているので、ここではこれから勉強を始めるという方に役に立ちそうなメモを残しておきます。
Ruby公式資格教科書の訂正箇所
Ruby公式資格教科書には、実は沢山の訂正箇所があります。
学習を始める際には、まず訂正箇所を一気に直しちゃいましょう!
正誤表は、以下で公開されています。
サポートページ - Ruby公式資格教科書 Ruby技術者認定試験Silver/Gold対応
また、サポートページで記載されてないけど、ここも誤りでは?と思った箇所があるので以下に記載します。
[1つ目]p.210 Hashクラスの説明
| ハッシュは連想配列とも呼ばれ、配列でのインデックスにあたるキーとして、数値以外の任意のRubyオブジェクトを利用できます。 |
これは誤りとはいえないかもしれませんが、何か違和感を覚えました。。
まるで、連想配列は数値をキーに使用できないかのような言い回しに感じませんか?
僕の日本語読解能力が乏しいだけですかね?そうかもしれないです。。。笑
[2つ目]p.228 表5-4 ファイルをテストするメソッド
| 誤 | File.exits? |
| 正 | File.exist? |
単なるスペルミスですね。
こちらはサポートページへお問い合わせ済です。
実は破壊的なメソッド一覧
公式問題集でかなりの割合を占める、破壊的・非破壊的メソッドの問題。 !(エクスクラメーションマーク)が付いてればわかりやすいですが、無くても破壊的である場合が厄介です。
ということで、!の付いていない破壊的メソッド、通称「実は破壊的なメソッド」を一覧にしてみました。
Stringクラス
| 実は破壊的なメソッド |
|---|
| insert |
| replace |
| << |
| concat |
| []= |
おまけ
String#deleteは実は破壊的でない
Arrayクラス
| 実は破壊的なメソッド |
|---|
| << |
| push |
| concat |
| insert |
| unshift |
| []= |
| fill |
| replace |
| delete_at |
| delete_if |
| delete |
| clear |
| shift |
| pop |
Hashクラス
| 実は破壊的なメソッド |
|---|
| []= |
| delete |
| delete_if |
| replace |
| shift |
| update |
| clear |
おまけ
実は破壊的じゃないメソッド merge、invert
疑問…
String#deleteは非破壊的なのに、Array#deleteは破壊的なんですよね。
このあたり、どう定義分けをしているのか気になって仕方ありません。
2013.7.17 追記
破壊的メソッドの覚え方について以下の記事を参考にさせて頂いていました。
C 言語ユーザのための Ruby 入門以下は引用。破壊的メソッドは、基本的に以下の3つのどれかだそうです。
1.末尾に "!" が付いているメソッド
2.リスト的な構造を持つクラスにおいて特定の要素を追加・削除・変更するメソッド
3.オブジェクトそのものを置換えたり、消去したり、属性を変更したりするメソッド
たしかに、こう考えるとわかりやすいですね!
Overrideできない演算子
最後に、Overrideできない演算子をご紹介しておきます。
= += ! not && and || or :? ::
これだけ見るとただの記号の羅列にしか見えなくて覚えられそうにありませんが、 以下のように分類すると記憶しやすいです。
ということで、次はGold目指してがんばります!
