Ruby 这两种方法参数定义之间有什么区别?

Ruby 这两种方法参数定义之间有什么区别?,ruby,pointers,methods,Ruby,Pointers,Methods,我开始学Ruby了。我读到通过引用传递给方法的参数, 但是我不明白这两种方法之间的区别 def print(text) puts text end 及 使用*意味着我们在使用Ruby参数列表中的参数名之前传递一个类似于C?的指针,因此它们类似于C/C++for varargs中的.. def vlaFunc(*args) puts args end vlaFunc(1,2,3) # output is [1,2,3] *文本在Ruby中被称为splat操作符。这基本上意味着

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

def print(text)
   puts text
end


使用
*
意味着我们在使用Ruby参数列表中的参数名之前传递一个类似于C?

的指针,因此它们类似于C/C++for varargs中的
..

def vlaFunc(*args)
    puts args
end

vlaFunc(1,2,3)

# output is [1,2,3]

*文本在Ruby中被称为splat操作符。这基本上意味着,如果您将多个参数传递给第二次打印,它们将被插入到单个文本变量中


请参见

Ruby中没有指针,
*
在此上下文中通常被称为“splat”操作符:


在这种情况下,该方法可以接受任意数量的参数,这些参数将在数组
text

中可用。首先,从这里开始有两个不错的方法。但我想说的是,尽量避免在它们内部使用puts。反正你也不需要它。方法将始终生成最后一个求值的语句。something=文本可以完成任务。我现在不需要回答这些差异。 你的前两个回复非常好。但是你可能想试试这样的东西 j=*[]#=>1.8中为零,但1.9中为[]
这是一段时间以来新来的孩子。猜猜它是干什么的?

Hehe,可以这么说,但在Ruby newbie线程中可能不行
def vlaFunc(*args)
    puts args
end

vlaFunc(1,2,3)

# output is [1,2,3]