2011-12-31 98 views
2

我開始學習Ruby。我通過引用方法讀取了參數,但是我不明白這兩種方法之間的區別。這兩個方法參數定義有什麼區別?

def print(text) 
    puts text 
end 

def print(*text) 
    puts text 
end 

使用*意味着我們是用C語言指針傳遞什麼樣的?

回答

5

*文本在Ruby中被稱爲splat操作符。它基本上意味着,如果您將多個參數傳遞給第二個打印文件,它們將會變成單個文本變量。

參見The Splat Operator in Ruby

4

在Ruby參數列表中的參數名稱用於variable length arguments之前的*,因此它們類似於C/C++中的... for varargs。

def vlaFunc(*args) 
    puts args 
end 

vlaFunc(1,2,3) 

# output is [1,2,3] 
+0

好的非常感謝你。 – 2011-12-31 17:32:35

2

有在紅寶石,*沒有指針在這種情況下,通常被稱爲 「圖示」 操作符:

在這種情況下,該方法可以接受任意數量的參數,這些參數將可用在數組text

+0

我寧願說在Ruby中只有*指針:-) – 2011-12-31 19:13:03

+0

呵呵,可以這麼說,但也許不在Ruby新手線程中。 ;-) – 2012-01-01 01:50:11

0

首先你有兩個很好的方法在那裏開始。但我會說盡量避免在他們中使用放入。無論如何你都不需要它。一個方法總是會產生最後一個評估的語句。東西=文本將完成工作。我現在不需要回答這些差異。 你的前兩個回覆非常好。但你可能想嘗試一下這樣的東西 j = * []#=> 1.8中的零而1.9中的是[] 現在這個區塊已經是新的孩子了。猜猜它是幹什麼的?