ばくのエンジニア日誌

技術的なメモなどを書いていきます。

Ruby認定技術者のSilverに受かったので諸々の報告

このブログ(ばくのエンジニア日誌)はBAKUNOTEに移転しました。

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目指してがんばります!