2016-11-08 56 views
2

我在尋找一個紅寶石方法如何使用圖示作爲Ruby方法參數

def test(*) 
    puts "hello" 
end 

我感到困惑的*。很明顯,如果我運行測試,它會返回「你好」。但如果我傳遞一個參數到測試...

test("this argument") 

如何調用測試方法內的方法,但仍然有飛濺?我只是對沒有名字的飛濺感到困惑。它是如何工作的?

+2

這可能幫助:http://stackoverflow.com/questions/5249537/naked- asterisk-as-parameter-in-method-definition-def-f – orde

+0

@orde謝謝。但是我想知道的是我怎樣才能調用傳遞給方法的參數。那麼我需要將它定義爲'def test(* args)'嗎? – jason328

+0

我會說實話:第一次看到裸體摔跤運營商。但是 - 如果你做了像'def foo(* args)提出參數; - 然後方法參數被收集到一個'args'數組中,你可以做'foo(1,2)#=> 1 2'。 – orde

回答

0

這個帖子有一個相當詳細的低水平解釋:http://blog.honeybadger.io/ruby-splat-array-manipulation-destructuring/

引述最相關的部分:

def go(x, *args, y) 
    puts x # => 1 
    puts y # => 5 
    puts args.inspect # => [2,3,4] 
end 

go(1, 2, 3, 4, 5) 
+2

請在您的回答中添加博客文章摘要。至少在這裏描述回答問題的部分。由於外部鏈接往往會惡化並迅速消失,因此僅鏈接答案在Stack Overflow上不受歡迎。 –

+0

固定並正在生產 – whodini9

+0

所以這部分對我來說很有意義。我感到困惑的是如果參數不在那裏會發生什麼?我是否強制將參數放入方法參數中以獲取我想要的參數?我假設如此。 – jason328

相關問題