昨天分享了基本的運算符,今天來分享進階的* 運算符(Splat Operator)
和** 運算符(Double Splat Operator)
,筆者也是今天要撰寫主題時才發現*
和**
都是運算符呢~~
*
時,它允許你將一個陣列或多個參數打包成一個array
。def sum(*numbers)
total = 0
numbers.each { |num| total += num }
total
end
puts sum(1, 2, 3, 4) # 輸出10
*
使用時,它允許你將一個array
的元素展開為多個參數。numbers = [1, 2, 3, 4]
result = sum(*numbers) # 展開array
puts result # 輸出10
hash
)。**
時,它允許你將一組關鍵字參數打包成一個hash
。def options(**params)
puts params
end
options(name: 'John', age: 30, city: 'New York')
# 輸出:{ :name=>"John", :age=>30, :city=>"New York" }
**
時,它允許你將一個hash
的key
,value
對展開為關鍵字參數。user_info = { name: 'Alice', age: 25, city: 'Los Angeles' }
options(**user_info) # 通過**展開hash
# 輸出:{ :name=>"Alice", :age=>25, :city=>"Los Angeles" }
參考資料: