2016-11-08 75 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

相关问题