2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

オプション引数の使い方と機能について

Posted at

はじめに

オプション引数の使い方と機能について説明します。

オプション引数とは

使い方:(** 引数)   ←引数の前に" ** "をつけます。

オプション引数は、引数としてハッシュしか受け取れないようにする働きがあります。
使用する目的としては、間違ってハッシュ以外の引数を渡したときに、エラーが出るようにするためです。
(データの整合性を保つためにオプション引数で記述する)

処理の流れ

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)

最後に

今回は、オプション引数について説明させていただきました。
データの整合性を保つことを意識して、今後使用していきたいと思います。
ありがとうございまいした。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?