Ruby技術者認定試験のサンプル問題を解いていく ~silver編~①
githubにあるRuby技術者認定試験のサンプル問題を解説していこうと思います!
問題はこちらにありますので是非解いてみてくださいね!
解説はRuby 2.7.0 リファレンスマニュアルに準拠しています。
第一問
問題1. 選択肢の中からRubyの予約語ではないものを2つ選択してください。
- A.super
- B.begin
- C.try
- D.goto
正解はCとDです。
予約語
予約語とは
予約語(よやくご、英: 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__ | 現在のソースファイルのスクリプトエンコーディングを示します。 |