概要
擬似キーワード引数
内容
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?"
関連
メタプログラミングRuby | イディオム | 名前付き引数
http://d.hatena.ne.jp/tbpg/20130702/1372778621