我开始学习Ruby了。我读了通过引用方法传递的参数, 但我不明白这两种方法的区别。
def print(text)
puts text
end
和
def print(*text)
puts text
end
使用*
意味着我们正在传递一个像C?
答案 0 :(得分:5)
* text是Ruby中的splat运算符。它基本上意味着如果你将多个参数传递给第二个印刷品,它们将被插入到单个文本变量中。
答案 1 :(得分:4)
Ruby参数列表中参数名称之前的*
用于variable length arguments,因此它们类似于C / C ++中针对varargs的...
。
def vlaFunc(*args)
puts args
end
vlaFunc(1,2,3)
# output is [1,2,3]
答案 2 :(得分:2)
Ruby中没有指针,在此上下文中*
通常被称为“splat”运算符:
在这种情况下,该方法可以采用任意数量的参数,这些参数将在数组text
中可用。
答案 3 :(得分:0)
首先,你有两个不错的方法。但我会说尽量避免在其中使用puts。你无论如何都不需要它。方法将始终产生最后一个评估的语句。 something = text会完成工作。我现在不需要回答这些差异。 你的前两个回复非常好。但你可能想尝试这样的事情 j = * []#=>在1.8中为零,但在1.9中为[] 一段时间以来,它一直是这个街区的新生儿。猜猜它的作用是什么?