我在寻找一个红宝石方法如何使用图示作为Ruby方法参数
def test(*)
puts "hello"
end
我感到困惑的*。很明显,如果我运行测试,它会返回“你好”。但如果我传递一个参数到测试...
test("this argument")
如何调用测试方法内的方法,但仍然有飞溅?我只是对没有名字的飞溅感到困惑。它是如何工作的?
我在寻找一个红宝石方法如何使用图示作为Ruby方法参数
def test(*)
puts "hello"
end
我感到困惑的*。很明显,如果我运行测试,它会返回“你好”。但如果我传递一个参数到测试...
test("this argument")
如何调用测试方法内的方法,但仍然有飞溅?我只是对没有名字的飞溅感到困惑。它是如何工作的?
这个帖子有一个相当详细的低水平解释: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)
这可能帮助:http://stackoverflow.com/questions/5249537/naked- asterisk-as-parameter-in-method-definition-def-f – orde
@orde谢谢。但是我想知道的是我怎样才能调用传递给方法的参数。那么我需要将它定义为'def test(* args)'吗? – jason328
我会说实话:第一次看到裸体摔跤运营商。但是 - 如果你做了像'def foo(* args)提出参数; - 然后方法参数被收集到一个'args'数组中,你可以做'foo(1,2)#=> 1 2'。 – orde