Tbpgr Blog

元エンジニア 人事 tbpgr(てぃーびー) のブログ

書籍 Rubyベストプラクティス | 美しいAPI設計 | 擬似キーワード引数

概要

擬似キーワード引数

内容

Rubyの引数について。
擬似キーワード引数。
Ruby1.9まではRubyがキーワード引数をサポートしていないため、大体手段として利用する手法。
Ruby2.0では文法としてサポートされている。

擬似キーワード引数は順序付き引数との併用も可能。
最後に配置することで、指定時にハッシュのブレースを省略できます。

サンプル

# encoding: utf-8

class Hoge
  def initialize
    yield self
  end

  def hogerized_message(header_message, body_message, options = {})
    exclamation = options[:exclamation ] ? '!' : ''
    question = options[:question] ? '?' : ''
    "#{header_message}_hoge_#{body_message}#{exclamation}#{question}"
  end
end

Hoge.new do |h|
  p h.hogerized_message "header", "body"
  p h.hogerized_message "header", "body", exclamation: true, question: true
  p h.hogerized_message "header", "body", exclamation: true
  p h.hogerized_message "header", "body", question: true
end

出力

"header_hoge_body"
"header_hoge_body!?"
"header_hoge_body!"
"header_hoge_body?"