#はじめに
筆者
趣味レベルでRubyを使っていたアマチュアプログラマ
この記事の趣旨
筆者がRuby技術者認定試験Silver2.1の勉強をする過程で
理解が不十分だった内容をクイズ形式で紹介します。
解答+簡易解説は”▶解答”をクリックで開きます。
参考文献
Rubyリファレンスマニュアル(2.1.0)
#問題
・次のうち、存在しないコマンドラインオプションはどれ?(一つ選択)
a. -a
b. -b
c. -c
d. -d
e. -e
解答
**-b**:存在しないオプション。 -a:オートスプリットモードをONにする(-n, -p と同時に指定) -c:実行せずに文法をチェック。問題なければ"Syntax OK"と出力。 -d:デバッグモードでスクリプトを実行($DEBUGをtrueにする) --debug でも同じ -e:コマンドラインからスクリプトを指定 -e 指定時は引数からスクリプトファイル名を取らない・次のうち、後ろにディレクトリ名をとれないのはどれ?(一つ選択)
a. -C
b. -I (大文字の i )
c. -S
d. -x
解答
**-S**:環境変数PATHの値を使ってスクリプトを探すように指定。 -C directory :スクリプト実行前に指定したディレクトリに移動 -I directory :ファイルをロードするパスを指定(追加) -x [directory]:メッセージ中のスクリプトを取り出して実行。 ディレクトリ名を指定すると スクリプト実行前に指定したディレクトリに移動・次のうち、存在しないコマンドラインオプションはどれ?(一つ選択)
a. --copyright
b. --disable
c. --encoding
d. --help
e. --verbose
f. --version
解答
**--disable**:--enable, --disable は 2.2 から --copyright:著作権を表示 --encoding :デフォルトの外部エンコーディングと内部エンコーディングを ex[:in] で指定(-E ex[:in]でも可) --help :コマンドラインオプションの概要を表示(-h でも可) --verbose :冗長モード。組み込み変数 $VERBOSE をtrueにセット --version :Rubyのバージョンを表示 -v について -v のみが指定されたときはバージョンを表示して実行を終了。 -v 以外にも引数がある場合はバージョンを表示し、冗長モードになる。 -w はバージョンを表示せずに冗長モードになる。・次のうち、グローバル変数に関係しないものはどれ?(一つ選択)
a. -0数字
b. -Fregexp
c. -l
d. -n
e. -p
解答
**-n** :プログラム全体が while gets; ...;end で囲まれているように動作する。 グローバル変数には関係しない -0数字 :入力レコードセパレータ(\$/)を8進数で指定 -Fregexp:入力フィールドセパレータ(\$;)に regexp をセット -l :行末の自動処理を行う。 \$\ を \$/ と同じ値に設定、printでの出力時に改行を付加する。 -n フラグまたは-pフラグが指定されていると gets で読み込まれた各行の最後に対して String#chop!を行う。 -p :-nフラグとほぼ同じだが、各ループの最後に変数 $_ の値を出力する。・次のうち、オプション単体でしか動作しないものはどれ?(一つ選択)
a. -i
b. -r
c. -s
d. -T
e. -W
f. -y
解答
**-y**:コンパイラデバッグモード( --yydebug でも可) -i[extension]:引数で指定されたファイルの内容を置き換える(in-place edit) extensionを指定すると元のファイルを拡張子をつけた形で保存 -r feature :feature で指定されるライブラリを Kernel.#requireする。 -s :スクリプト名の後ろにおいた `-'で始まる引数を解釈し、 同名のグローバル変数に値を設定 -T[level] :不純度チェックを行う。levelは安全度レベルの指定 -W[level] :冗長モードを三段階のレベルで指定#あとがき
しんどかった(›´ω`‹ ) ゲッソリ
コマンドラインオプションはほとんど使ってこなかったため、
「どれも理解が不十分だから、いっそのこと問題で全部登場させてみるか」
と思ったのが運の尽きでした。
しかも苦労した割に完成度は低いという…問題を作るのって難しいんだなぁ。