这两个方法参数定义有什么区别?

时间:2011-12-31 17:29:34

标签: ruby pointers methods

我开始学习Ruby了。我读了通过引用方法传递的参数, 但我不明白这两种方法的区别。

def print(text)
   puts text
end

def print(*text)
    puts text
end

使用*意味着我们正在传递一个像C?

这样的指针

4 个答案:

答案 0 :(得分:5)

* text是Ruby中的splat运算符。它基本上意味着如果你将多个参数传递给第二个印刷品,它们将被插入到单个文本变量中。

请参阅The Splat Operator in Ruby

答案 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中为[] 一段时间以来,它一直是这个街区的新生儿。猜猜它的作用是什么?