Ruby の名前付きパラメーター
パラメータについて話すときは、値を割り当てることができる関数を指します。 これらの値は、パラメータの代わりに表示されます。
たとえば、パラメーター fruit
を定義し、値 "apple"
をパラメーターに割り当てると、"apple"
が表示されます。
Ruby のパラメータの型
Ruby で主に適用されるパラメーターには、主に 2つのタイプがあります。 オプションのパラメーターと名前付きパラメーターがあります。
これら 2つのパラメーターの適用例を見て、さまざまな違いを理解しますが、一目でわかる違いの 1つは、オプションのパラメーターが =
記号で定義され、名前付きパラメーターが :
サイン。
Ruby のオプション パラメータ
パラメータ内に複数の値を定義する場合にのみ値を再割り当てできるため、オプションのパラメータはほとんどが 1 次元です。
以下の例を見てみましょう。Ruby ファイルを作成し、new.rb
という名前を付けて、これらのコードを入力します。
def show_name_and_address(name="James", address="Madison")
puts "#{name}, #{address}"
end
show_name_and_address
結果に "James, Madison"
が表示されます。 パラメータの値を変更してみましょう。
別のファイルを作成し、new2.rb
という名前を付けて、次のコードを入力します。
def show_name_and_address(name="James", address="Madison")
puts "#{name}, #{address}"
end
show_name_and_address('Bond')
"Bond, Madison"
と表示された結果が表示されます。 値が変更された唯一のパラメーターは、最初のパラメーターである name
パラメーターです。 しかし、address
パラメータの値を変更したい場合はどうすればよいでしょうか?
新しいファイルを作成し、new3.rb
という名前を付けて、このスニペットを入力します。
def show_name_and_address(name="James", address="Madison")
puts "#{name}, #{address}"
end
show_name_and_address(address='Bond')
このコードを実行すると、name
パラメータのみが変更されることがわかります。
address
パラメータは変更できません。 これは、オプションのパラメーターと比較して、名前付きパラメーターがうまく機能する場所です。
Ruby の名前付きパラメーター
オプションのパラメーターとは異なり、名前付きパラメーターは、関数に値を追加する際により柔軟なアプローチを提供します。 name
パラメーターと address
パラメーターの両方に割り当てる値を変更できます。
これを実際に確認するために、以下の例を見てみましょう。
新しいファイルを作成し、new.rb
という名前を付けて、次のコードを追加します。
def show_name_and_address(name: "James", address: "Madison")
puts "#{name}, #{address}"
end
show_name_and_address(name: 'Bond')
name
変数に割り当てられた値が "Bond"
に変更されていることがわかります。 しかし、これで問題ありません。 これは、オプションのパラメーターでできることです。
address
変数に値を代入する方法を見てみましょう。
新しいファイルを作成し、new2.rb
という名前を付けて、次のコードを入力します。
def show_name_and_address(name: "James", address: "Madison")
puts "#{name}, #{address}"
end
show_name_and_address(address: 'Bond')
address
パラメータに割り当てられた値が Bond
に変わることがわかります。
名前付きパラメーターが最初の例と同じ結果を表示するようにしたい場合は、オプションのパラメーターを使用して、=
記号を :
に変更します。
まとめ
複数のパラメーターの値を変更する必要がある場合、名前付きパラメーターはオプションのパラメーターよりもうまく機能します。 どちらの方法を適用するかは、何を達成したいかによって異なります。
Fisayo is a tech expert and enthusiast who loves to solve problems, seek new challenges and aim to spread the knowledge of what she has learned across the globe.
LinkedIn