Q
帶可選參數的方法
13
A
回答
34
def some_func(variable = nil)
...
end
12
而且具有默認值的參數比較明顯的選項,澤已經表明,使用數組或哈希值可能會在某些情況下派上用場。兩種解決方案均保留無作爲論點。
1.接收爲數組:
def some_func(*args)
puts args.count
end
some_func("x", nil)
# 2
2.發送和接收的哈希:
def some_func(**args)
puts args.count
end
some_func(a: "x", b: nil)
# 2
+0
使用'* arg'和'** arg'而不是'arg'的目的是什麼? –
+4
@ sagarpandya82'* arg'作爲數組收集參數。沒有'*',你必須調用'some_func([「x」,nil])''。 '** arg'收集所有命名參數。如果沒有'**',它只會接受單個未命名的參數或任何數量的命名參數。 – bogl
3
您也可以使用哈希作爲參數,並有更多的自由:
def print_arg(args = {})
if args.has_key?(:age)
puts args[:age]
end
end
print_arg
# =>
print_arg(age: 35, weight: 90)
# => 35
相關問題
- 1. 帶參數的方法選擇器iOS
- 2. 方法和可選參數
- 3. 方法與可選參數
- 4. 使用帶有可選參數的方法的C#委託人
- 5. Grails的由封閉帶有可選參數替代方法
- 6. 重映射帶可選參數的codeigniter索引方法
- 7. 帶可選QueryString的OpenRasta解決方法參數
- 8. 帶參數的JavascriptRouter方法
- 9. 帶參數的方法proc
- 10. Roxygen2:帶有可選參數
- 11. jQuery方法,可選參數的順序
- 12. 方法的MVC可選參數
- 13. 方法中的java可選參數
- 14. 帶可選參數的TypeScript lambda函數
- 15. 帶可選參數的函數
- 16. 實例方法與帶參數參數的靜態方法
- 17. Invoke方法與可選參數
- 18. 方法覆蓋和可選參數
- 19. 方法重載與可選參數
- 20. 方法分辨率可選參數
- 21. 通用方法和可選參數
- 22. 循環(可選)方法參數
- 23. 方法只有可選參數不同
- 24. Ruby方法和可選參數
- 25. 帶可選參數的Sprintf格式化
- 26. 帶有可選參數的PreparedStatement SQL
- 27. 處理可選方法參數的常用方法是什麼?
- 28. jQuery的通帶參數的函數的參數jQuery的方法
- 29. 調用帶參數的方法
- 30. 帶參數的呼叫方法
然後,當然,必須有某種程度上di在默認的nil和顯式的nil之間進行區分(如果它很重要):) –
這就是def some_func(variable =(variable_was_not_passed = true;無))'成語是爲了。 –
@JörgWMittag你能解釋它是如何工作的嗎?謝謝! – dowi