はじめに
オプション引数の使い方と機能について説明します。
オプション引数とは
使い方:(** 引数) ←引数の前に" ** "をつけます。
オプション引数は、引数としてハッシュしか受け取れないようにする働きがあります。
使用する目的としては、間違ってハッシュ以外の引数を渡したときに、エラーが出るようにするためです。
(データの整合性を保つためにオプション引数で記述する)
処理の流れ
newメソッドよってinitializeメソッドが呼び出され、ハッシュの引数(name: "山田太郎")が(**params)に渡されます。
そして @name = params[:name]によって、@nameに"山田太郎"が代入されます。
同時にこのとき、Personクラスがインスタンス化されます。
次にperson.introductionによってintroductionメソッドが呼び出され
puts "私の名前は#{name}です。"の#{name}に"山田太郎"が代入されてputsが出力されます。
class Person
attr_reader :name
# (**params)と書いてオプション引数を使用し、ハッシュしか受け取れないようにしている
def initialize(**params)
@name = params[:name]
end
def introduction
puts "私の名前は#{name}です。"
end
end
#ハッシュ(name: "山田太郎" )をinitializeメソッドに渡している
person = Person.new(name: "山田太郎" )
person.introduction
# 出力結果
私の名前は山田太郎です。
ちなみに
オプション引数を使用した状態で引数をハッシュ以外にした場合、下記エラーが発生します。
# 変更前
person = Person.new(name: "山田太郎" )
# 変更後
person = Person.new("山田太郎" )
# 変更後の出力結果
`initialize': wrong number of arguments (given 1, expected 0) (ArgumentError)
最後に
今回は、オプション引数について説明させていただきました。
データの整合性を保つことを意識して、今後使用していきたいと思います。
ありがとうございまいした。