🛎️ hash に **

* ( Splat Operator )は配列を展開する演算子

** ( Double Splat Operator) はハッシュを展開する演算子です。

array = [1, 2, 3] hash = {a: 1, b: 2} [a, b, array, c] #=> [a, b, [1, 2, 3], c] [a, b, *array, c] #=> [a, b, 1, 2, 3, c] {A: 10, B: 11, hash, C: 12} #=> SyntaxError {A: 10, B: 11, **hash, C: 12} #=> {A: 10, B: 11, a: 1, b: 2, C: 12}

オプション引数

可変長引数に類似の引数です。引数にキーとバリューの組み合わせを指定したい場合に使用します。引数は可変長です。
def greet(**args) args.each do |arg| puts "#{arg[0].capitalize} is #{arg[1]}." end end greet(name: "Taro", age: 10) #=> "Name is Taro." "Age is 10."
引数の前に ** を付けます。これで複数のキーとバリューの組み合わせをハッシュとして受け取れます。指定するキーはなんでも良いので使い道は限定されると思います。あらかじめキーだけは指定しておくキーワード引数の方が使用頻度は高いと思います。
Rubyの引数いろいろ - shyu61 techBlog
昨年のクリスマスにRuby3.0がリリースされました。8年ぶりのメジャーバージョンアップで、その目玉として静的型付けが導入されたことはご存知の方も多いのではないでしょうか。 それ以外にも様々な変更がありましたが、そのうちの一つでキーワード引数の扱いが変更になりました。引数は種類が多くてややこしいですよね。私もよくわからなくなるのでまとめてみようと思います。 引数の書き方 デフォルト引数 可変長引数 オプション引数 キーワード引数 *と** ブロック引数 ブロックの呼び出し方いろいろ 引数の書き方 Rubyは関数呼び出しや、定義の時に引数のカッコを省略可能です。 def greet name p…
title
https://shyu-61.hatenablog.com
title


hash を綺麗に展開してくれる

キーワード引数とかで関数にハッシュを渡すときは展開してあげよう

> hash1 = { id: 1, type: 'hoge' } => {:id:=>1, :type=>"hoge"} > hash2 = { test: 1 } => {:test=>1} > hash3 = { hash1, hash2 } SyntaxError: unexpected ',', expecting => hash3 = { hash1, hash2 } ^ > hash3 = { hash1: hash1, hash2: hash2 } => {:hash1=>{:id:=>1, :type=>"hoge"}, :hash2=>{:test=>1}} > hash3 = { **hash1, **hash2 } => {:id:=>1, :type=>"hoge", :test=>1}