我有一个关于在函数调用中学习*的基本问题,我无法从在线文档中理解:
def self.new(*args, &block)
* args在上面的函数调用中意味着什么?
答案 0 :(得分:2)
这意味着您可以传递任何数量的参数,这些参数将存储在此方法的args
表中。看看:https://endofline.wordpress.com/2011/01/21/the-strange-ruby-splat/
答案 1 :(得分:2)
考虑以下方法
def user(user_name)
puts user_name
end
所以当你打电话时
user("RPV")
Output:
RPV
=> nil
但是,如果你传递多个参数,如
,该怎么办?user("RPV", "Marek")
它会出错
错误的参数数量(2对1)
为了避免这种错误,splat(*)运算符很有帮助
def user(*user_name)
puts user_name
end
当你传递多个参数时,它会处理它在数组中的转换
user("RPV", "Marek")
output:
RPV
Marek
nil
它使user_name成为一个数组
def user(user_name)
p user_name
end
user("RPV", "Marek")
output:
["RPV", "Marek"]
希望你能使用它。