Ruby技術者認定試験のサンプル問題を解いていく ~silver編~①

githubにあるRuby技術者認定試験のサンプル問題を解説していこうと思います!

問題はこちらにありますので是非解いてみてくださいね!

解説はRuby 2.7.0 リファレンスマニュアルに準拠しています。

第一問

問題1. 選択肢の中からRuby予約語ではないものを2つ選択してください。

  • A.super
  • B.begin
  • C.try
  • D.goto

正解はCDです。

予約語

予約語とは

予約語(よやくご、英: reservedword)とは、プログラミング言語において字句的には識別子(変数名、関数名、クラス名など)としてのルールを満たしているにもかかわらず、識別子にならない字句要素。 似ている言葉としてキーワードがある。

(wikipedia)

Ruby側が使ってるから使えないよというワードのことです。

Ruby予約語

一番シンプルに定義するとすればRubyを書く上で普段使うメソッド以外のワードということになりますが、それだけだとわかりにくいので大まかに分けてみます。

Ruby予約語はそんなに多くないのでこの機会に覚えてしまいましょう!

注意点は、そもそも変数やメソッド名として使用できないワード(+、=などの演算子や数字から始まるものなど)は予約語には含まれないということです。

最後にそれぞれの予約語がどんな機能を持つかもざっくり説明していきます。

予約語の大まかな分類

比較演算子 and or not
擬似変数 self nil true false __LINE__ __FILE__ __ENCODING__
条件分岐 if elsif else unless case when
繰り返し while until for break next redo retry
例外処理 begin rescue ensure
その他の制御構造 BEGIN END
何かを定義する class module def undef defined? alias
処理の起点、終点を表す do end
メソッドの呼び出し super yield
戻り値関連 then in return

rubyを書籍で学習してみてもいいですね。

 

 

 

 

予約語の機能

BEGIN ファイルを実行した際に一番最初に実行される処理のブロックを定義します。
END ファイル内に記述された全ての処理が完了し、インタプリタを終了する際に実行される処理のブロックを定義します。
alias メソッドやグローバル変数に別名(エイリアス)を与えます。
and 両辺の式を順に評価していく比較演算子で、&&よりも優先順位が低ものです。
begin ある処理の実行中に発生した例外を後に記述されたrescueで捕捉する処理を指示します。
break 一番内側のループを抜ける処理を指示します。
case ある式が後に記述されたwhen節に一致するかによって分岐を行います
class クラスを定義します。
def メソッドを定義します。
defined? ある式が定義されているかどうかを判定します。
do 繰り返し処理などで処理の開始を示します。
else 条件分岐において既出のどの条件も満たさない全ての場合に対して行う処理を指示します。
elsif 条件分岐において既出のどの条件も満たさないものについてさらに条件を指定して分岐させます。
end ブロックの終了を示します。
ensure begin式の中で例外発生の有無にかかわらず実行する処理を指示します。
false 式の評価結果が偽であることを表します。
for 式を評価した結果に対して行う処理を指示します。。
if 式を評価した結果がtrue(真)の場合に行う処理を指示します。
in for文においてeachメソッドの戻り値を返すオブジェクトを指定します。
module モジュールを定義します
next 一番内側のループを抜けてその次のループに移行します。
nil 値が存在しないことを示します。
not 式を評価した時の結果と逆の真偽を返します。
or 両辺を順番に比較し、片方が真であれば一括して真を返す、||よりも優先度の低い比較演算子です。
redo その時点で行われている繰り返し処理を最初からやり直します。
rescue begin式の中で起こった例外に対して行う処理を指示します。
retry rescue節の中で使用することでbegin式を最初からやり直します。
return 戻り値を指定します。
self オブジェクト自身を指します。
super あるメソッド内で用いたとき、そのメソッドがオーバーライドしているメソッドを呼び出します。
then selfを引数としてブロックを評価し、その結果を返します。
true 式の評価結果が真であることを示します。
undef メソッドの定義を取り消します。
unless 条件式が偽の時に実行する処理を指示します。
until 条件式が真になるまで繰り返す処理を指示します。
when 直前のcaseで示された式を評価した結果に応じた処理を指示します。
while 条件式が真の間繰り返す処理を指示します。
yield ブロック付きメソッドを呼び出す際、ブロックに与える値を指定します。
__LINE__ 現在のソースファイル中の行番号を示します。
__FILE__ 現在のソースファイル名を示します。
__ENCODING__ 現在のソースファイルのスクリプトエンコーディングを示します。