Tbpgr Blog

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

書籍 Rubyベストプラクティス | 美しいAPI設計 | 配列引数

概要

配列引数

内容

Rubyの引数について。
配列引数について。
アスタリスク+引数名で引数を配列として受け取ることができる。

Array#flattenなどと組み合わせると柔軟な引数の設定が可能となる。

サンプル

# encoding: utf-8

class Hoge
  def initialize
    yield self
  end

  def hogerized_message(header_message, body_message, *args)
    flatten_args = *args.flatten
    exclamation = flatten_args[0] ? '!' : ''
    question = flatten_args[1] ? '?' : ''
    dollar = flatten_args[2] ? '$' : ''
    "#{header_message}_hoge_#{body_message}#{exclamation}#{question}#{dollar}"
  end
end

Hoge.new do |h|
  p h.hogerized_message "header", "body"
  p h.hogerized_message "header", "body", true, true, true
  p h.hogerized_message "header", "body", false, true, true
  p h.hogerized_message "header", "body", true
  p h.hogerized_message "header", "body", [true, true], true
end

出力

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