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