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でも使用されているらしい。