概要
Define your own conversion protocols
前提
Confident Rubyではメソッド内の処理を次のように分類しています。
・Collecting Inputs(引数チェック、変換など)
・Performing Work(主処理)
・Delivering Output(戻り値に関わる処理)
・Handling Failure(例外処理)
当記事は上記のうち、Collecting Inputsに関する話です。
サンプルコード仕様
フルネームを返却するメソッドを実装します。
引数には、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)
出力
あなたは佐藤 太郎さんですね あなたは田中 一郎さんですね