以下の内容はhttps://tbpgr.hatenablog.com/entry/20140508/1399564007より取得しました。


Ruby | Collecting Inputs | Define your own conversion protocols

概要

Define your own conversion protocols

前提

Confident Rubyではメソッド内の処理を次のように分類しています。
・Collecting Inputs(引数チェック、変換など)
・Performing Work(主処理)
・Delivering Output(戻り値に関わる処理)
・Handling Failure(例外処理)

当記事は上記のうち、Collecting Inputsに関する話です。

詳細

状況

コンテキスト特定のセマンティクスの型の入力を確認する必要がある

概要

Rubyの組み込み変換手続きをまねた、新たな変換手続きを定義する

理由

第三者のオブジェクトのために、メソッドが必要とする形式の型に変換するための変換手続きを公開することによって、
メソッドをよりオープンに拡張できる。

サンプルコード仕様

フルネームを返却するメソッドを実装します。
引数には、first_name/lastnameの配列
または
内部にfirst_name/lastnameフィールドを持つPersonクラスを指定できるようにします。

サンプルコード

class Person
  attr_reader :first_name, :last_name, :age
  def initialize(first_name, last_name, age)
    @first_name, @last_name, @age = first_name, last_name, age
  end

  def to_full_name
    [first_name, last_name]
  end
end

def print_fullname(names)
  names = names.to_full_name if names.respond_to? :to_full_name
  puts "あなたは#{names.join(' ')}さんですね"
end

tanaka = Person.new("田中", "一郎", 43)

print_fullname ["佐藤", "太郎"]
print_fullname(tanaka)

出力

あなたは佐藤 太郎さんですね
あなたは田中 一郎さんですね



以上の内容はhttps://tbpgr.hatenablog.com/entry/20140508/1399564007より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14