ジョギング
- お休み
日課
- お休み
別府に開発合宿に
開発合宿の成果、その 2 です。ご査収ください。 お宿はこちら.
夕飯が豪華で食べきれないくらいで満足した.
今日のるびぃ ~ Ruby技術者認定試験【Gold】模擬問題を解いてみる (re: 6) ~
もう何度か解いているけど, 再び, Ruby技術者認定試験【Gold】模擬問題 を 3 ~ 5 問くらいずつ解いていく.
Q19. ライブラリ YAML
以下のコードを実行した結果を選択する.
# コード require 'yaml' dir = <<EOY file1: name: file1.txt data: text EOY p YAML.load(dir)
{"file1"=>{"name"=>"file1.txt", "data"=>"text"}}
以下, irb による実行例.
irb(main):001:0> require 'yaml' => true irb(main):002:0> dir = <<EOY irb(main):003:0" file1: irb(main):004:0" name: file1.txt irb(main):005:0" data: text irb(main):006:0" EOY => "file1:\n name: file1.txt\n data: text\n" irb(main):007:0> p YAML.load(dir) {"file1"=>{"name"=>"file1.txt", "data"=>"text"}} => {"file1"=>{"name"=>"file1.txt", "data"=>"text"}}
以下, 解説より抜粋.
- yaml ライブラリを使用することで, 人間が読めるテキスト形式でオブジェクトを表現することが出来る
- 問題中のコードでは, まずハッシュのキー (
file1
) を指定し, さらにインデントでハッシュ (name:
,data:
) を指定しています。
Q20. コマンドラインオプション
Ruby で使用可能なオプションではないものを選択する.
-t
以下, ヘルプの抜粋.
$ ruby --version ruby 2.1.10p492 (2016-04-01 revision 54464) [x86_64-linux] kappa@tpX1-Carbon:~/sandbox/ruby-exam-gold$ ruby --help Usage: ruby [switches] [--] [programfile] [arguments] -0[octal] specify record separator (\0, if no argument) -a autosplit mode with -n or -p (splits $_ into $F) -c check syntax only -Cdirectory cd to directory before executing your script -d, --debug set debugging flags (set $DEBUG to true) -e 'command' one line of script. Several -e's allowed. Omit [programfile] -Eex[:in], --encoding=ex[:in] specify the default external and internal character encodings -Fpattern split() pattern for autosplit (-a) -i[extension] edit ARGV files in place (make backup if extension supplied) -Idirectory specify $LOAD_PATH directory (may be used more than once) -l enable line ending processing -n assume 'while gets(); ... end' loop around your script -p assume loop like -n but print line also like sed -rlibrary require the library before executing your script -s enable some switch parsing for switches after script name -S look for the script using PATH environment variable -T[level=1] turn on tainting checks -v, --verbose print version number, then turn on verbose mode -w turn warnings on for your script -W[level=2] set warning level; 0=silence, 1=medium, 2=verbose -x[directory] strip off text before #!ruby line and perhaps cd to directory --copyright print the copyright --enable=feature[,...], --disable=feature[,...] enable or disable features --external-encoding=encoding, --internal-encoding=encoding specify the default external or internal character encoding --version print the version --help show this message, -h for short message Features: gems rubygems (default: enabled) rubyopt RUBYOPT environment variable (default: enabled)
他の選択肢について.
オプション | 用途 |
---|---|
-e script | コマンドラインからスクリプトを指定する. ruby -e 'puts "hello world."' |
-d | デバッグモードでスクリプトを実行する. |
-r feature | スクリプト実行前に feature で指定されるライブラリを Kernel.#require する. |
Q21. オブジェクト指向
以下のコードの実行結果から__(1)__に当てはまるものを選択する.
# コード class Person __(1)__ :name end person = Person.new person.name = "Suzuki" puts "Hello, " + person.name # 実行結果 Hello, Suzuki
attr_accessor
以下, irb による実行例.
irb(main):001:0> class Person irb(main):002:1> attr_accessor :name irb(main):003:1> end => nil irb(main):004:0> irb(main):005:0* person = Person.new => #<Person:0x005620e3f60838> irb(main):006:0> person.name = "Suzuki" => "Suzuki" irb(main):007:0> puts "Hello, " + person.name Hello, Suzuki => nil
他の選択肢について.
メソッド名 | 用途 |
---|---|
attr_reader :name | :name で指定した名前のインスタンス変数 @name に設定された値を返すメソッドを定義する. オブジェクト.name でアクセスする. |
attr_writer :name | :name で指定した名前のインスタンス変数 @name に値を設定するメソッドを定義する. オブジェクト.name=(引数) で定義する. |
attr_accessor :name | 上記 2 つのメソッドの両方を呼び出すメソッド. インスタンス変数の参照と変更が出来る. |
フムフム.