Slide 7
Slide 7 text
定義⽅法いろいろ
定義⽅法いろいろ
# 3
つのプロパティを持つ疑似クラスを作成する
User = Struct.new(:id, :name, :age)
# User.new
には Struct.new
で渡した引数の順番で渡す
User.new(1, "homu", 14)
# Struct.new
に keyword_init: true
を渡すと
User = Struct.new(:id, :name, :age, keyword_init: true)
# User.new
にキーワード引数で渡せるようになる
p User.new(name: "homu", age: 14, id: 1)
# => #
# Struct.new
にブロックを渡し、その中でメソッドを定義すると
#
インスタンスメソッドとして定義される
User = Struct.new(:last_name, :first_name) do
def full_name
"#{last_name} #{first_name}"
end
end
homu = User.new("
巴", "
マミ")
#
ユーザが定義したインスタンスメソッドが呼べる
p homu.full_name # => "
巴 マミ"