我开始学习Ruby。我通过引用方法读取了参数,但是我不明白这两种方法之间的区别。这两个方法参数定义有什么区别?
def print(text)
puts text
end
和
def print(*text)
puts text
end
使用*
意味着我们是用C语言指针传递什么样的?
我开始学习Ruby。我通过引用方法读取了参数,但是我不明白这两种方法之间的区别。这两个方法参数定义有什么区别?
def print(text)
puts text
end
和
def print(*text)
puts text
end
使用*
意味着我们是用C语言指针传递什么样的?
*文本在Ruby中被称为splat操作符。它基本上意味着,如果您将多个参数传递给第二个打印文件,它们将会变成单个文本变量。
在Ruby参数列表中的参数名称用于variable length arguments之前的*
,因此它们类似于C/C++中的...
for varargs。
def vlaFunc(*args)
puts args
end
vlaFunc(1,2,3)
# output is [1,2,3]
有在红宝石,*
没有指针在这种情况下,通常被称为 “图示” 操作符:
在这种情况下,该方法可以接受任意数量的参数,这些参数将可用在数组text
。
我宁愿说在Ruby中只有*指针:-) – 2011-12-31 19:13:03
呵呵,可以这么说,但也许不在Ruby新手线程中。 ;-) – 2012-01-01 01:50:11
首先你有两个很好的方法在那里开始。但我会说尽量避免在他们中使用放入。无论如何你都不需要它。一个方法总是会产生最后一个评估的语句。东西=文本将完成工作。我现在不需要回答这些差异。 你的前两个回复非常好。但你可能想尝试一下这样的东西 j = * []#=> 1.8中的零而1.9中的是[] 现在这个区块已经是新的孩子了。猜猜它是干什么的?
好的非常感谢你。 – 2011-12-31 17:32:35