ようへいの日々精進XP

よかろうもん

2018 年 04 月 29 日(日)

ジョギング

  • 別府の街 (海沿い) を 40 分くらい
  • 知らない街を走るのって気持ち良い

日課

  • お休み

開発合宿二日目

開発合宿の成果をデプロイしました。

地獄めぐりからの鶴見岳にロープウェイで登ったり, 奥さんと楽しい一日を過ごすことが出来た.

今日のるびぃ ~ Ruby技術者認定試験【Gold】模擬問題を解いてみる (re: 7) ~

もう何度か解いているけど, 再び, Ruby技術者認定試験【Gold】模擬問題 を 3 ~ 5 問くらいずつ解いていく.

Q22. 正規表現

以下のコードの実行結果から __(1)__ に当てはまるものを選択する.

# コード
/(\d+)/ =~ "hello24world"
puts __(1)__

# 実行結果
24

$1

以下, irb による実行例.

irb(main):001:0> /(\d+)/ =~ "hello24world"
=> 5
irb(main):002:0> 
irb(main):003:0* puts $1
24
=> nil

解説がイマイチだったので, プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで を参考にさせて頂く.

  • 正規表現内に () = メタ文字 内部で文字列をキャプチャ, グループ化する
  • 設問では文字クラス \d (10 進数字 [0-9]) をキャプチャすることを意図している
  • キャプチャした内容は特殊なローカル変数 $1 $2 $3... の順番に代入される

Q23. コマンドラインオプション

以下のコマンドの実行結果から __(1)__ に当てはまるものを選択する.

# コマンドライン
$ ruby __(1)__ 'p 1024 * 5'

# 実行結果
5120

-e

以下, コマンドラインでの実行例.

$ ruby -e 'p 1024 * 5'
5120

以下, 解説より抜粋.

  • -e オプションは引数で指定した文字列を評価して, 結果を出力するオプションである

Q24. オブジェクト指向

以下のコマンドの実行結果から __(1)__ に当てはまるものを選択する.

# コード
class Person
 def __(1)__(name)
  @name = name
 end
 def info
  puts "My name is #{@name}."
 end
end
Person.new("Jim").info

# 実行結果
My name is Jim.

initialize

以下, irb での実行例.

irb(main):001:0> class Person
irb(main):002:1>  def initialize(name)
irb(main):003:2>   @name = name
irb(main):004:2>  end
irb(main):005:1>  def info
irb(main):006:2>   puts "My name is #{@name}."
irb(main):007:2>  end
irb(main):008:1> end
=> :info
irb(main):009:0> Person.new("Jim").info
My name is Jim.
=> nil

以下, 解説より抜粋.

  • initialize メソッドは、オブジェクトの初期化処理を定義するメソッド
  • オブジェクトが生成されるときに呼び出される
  • initialize メソッドは private メソッドで, 他言語でのコンストラクタに相当する
irb(main):012:0> Object.private_methods.grep(/init/)
=> [:initialize, :initialize_copy, :initialize_dup, :initialize_clone]

フムフム.