Ruby技術者認定試験【Gold】模擬問題
Ruby技術者認定試験【Gold】模擬問題(11~20)|CTC教育サービス 研修/トレーニング
ここの問題を解いて躓いたところ。CTCすごいな。
問20
-d オプションはデバッグモード
問26
pop, shif, unshift, pushどれが破壊的メソッドでどれが破壊的メソッドではないのか確認しておく必要がある。
method | 破壊/非破壊 |
---|---|
pop | 破壊 |
shift | 破壊 |
unshift | 破壊 |
push | 破壊 |
これらのメソッドはすべて破壊的
問28 : Comparableモジュール
Arrayクラスのインスタンスに対してsort
メソッドが実行されている。
Arrayクラスには当然Comparable
モジュールがインクルードされているので、必要なのは各配列の要素に対してsort
メソッドが<=>
メソッドにアクセスしたときのメソッドということになる。
Comparableモジュールが必要なのは、配列のソートなど既にコレクションになったものではない。他のオブジェクトと自分を比べるときに、自分と他とを比較可能なオブジェクトにするためにComparable
モジュールが必要になる。
またその際は何を基準に比較するのかを<=>
メソッドで決めておかなくてはならない。
class Students attr_reader :grade include Comparable def initialize(name, grade) @name = name @grade = grade end def <=> (other) @grade <=> other.grade end end takehiro = Students.new('takehiro', 80) taiga = Students.new('taiga',77) kanta = Students.new('kanta',89) wataru = Students.new('wataru',99) puts takehiro < kanta # true puts takehiro.between?(kanta,wataru) # false
<
もbetween?
もComparableのメソッドである。
問32: キーワード引数とデフォルト引数
おそらく問題が誤っていて、デフォルト値はキーワード引数でも通常のデフォルト値設定でも可能。
def foo(arg:"default") puts arg # dafault end foo def foo2(arg = "default") puts arg # default end foo2
問47: FileTestモジュール
FileTestモジュールに関する問題。
教科書の組み込みクラスの章で扱ったFileクラスとほとんど同じメソッドが用意されている。
file?/directory?
は直観的にどんなメソッドか判別できるが、socket?
というメソッドも用意されており、そのファイルがソケットであるかどうかを確認する。
逆にchild?
はありそうで、ないらしい。「ファイルとフォルダの親子関係」のようなものを確認するメソッドも存在しないようだ。
問 42 remove_methodとは?
undef_methodとremove_methodの違い - Qiita
undef_methodの方はメソッドは継承先まで効果を発揮する。
ちなみに過去の問題でも出てきた、undef
も継承先まで効果を発揮する。
ただし、undefはキーワードでリテラルかシンボルで指定するのに対して、undef_methodの方はStringかシンボルで指定する。という違いがある。
remove_method
は継承先まで影響しない。
問 52: webrickライブラリ
Ruby1.8から添付ライブラリではなく、標準ライブラリとして提供されている。
よってrequire
が不要で、そのまま記述できる。Ruby on Railsでも使用されているらしい。