Tag:

splat在这做什么?

match, text, number = *”foobar 123″.match(/([Az]*) ([0-9]*)/) 我知道这是在进行某种正则表达式匹配,但是splat在这里扮演什么角色,有没有办法在没有splat的情况下做到这一点,所以它不那么令人困惑?

通过splat运算符引用块来传递参数

当使用splat运算符通过引用将参数传递给块时,似乎会复制参数。 我有这个: def method a = [1,2,3] yield(*a) pa end method {|x,y,z| z = 0} #=> this puts and returns [1, 2, 3] (didn’t modified the third argument) 我如何通过引用传递这些参数? 如果我直接传递数组似乎有效,但splat运算符在这里更实用,直观和可维护。

这在Ruby语言中意味着什么?

运行以下代码, a = [1, 2, 3, 4, 5] head, *tail = a p head p tail 你会得到结果 1 [2, 3, 4, 5] 谁能帮我解释一下声明head,*tail = a ,谢谢!

为什么splat在数组定义中使用?

def initialize(apps, catch=404) @apps = []; @has_app = {} apps.each { |app| add app } @catch = {} [*catch].each { |status| @catch[status] = true } end 在Rack :: Cascade的这个方法中, splat(*)在[*catch]代码中的用途是什么? 我认为在方法参数中使用了一个splat来指示何时你将有一个未指定数量的参数。 splat在这里有不同的含义吗?

了解范围和数组中的ruby splat

我试图理解*(1..9)和[*1..9]之间的区别 如果我将它们分配给变量,它们的工作方式相同 splat1 = *(1..9) # splat1 = [1, 2, 3, 4, 5, 6, 7, 8, 9] splat2 = [*1..9] # splat2 = [1, 2, 3, 4, 5, 6, 7, 8, 9] 但是当我尝试直接使用*(1..9)和[*1..9]时,事情变得奇怪了。 *(1..9).map{|a| a.to_s} # syntax error, unexpected ‘\n’, expecting tCOLON2 or ‘[‘ or ‘.’ [*1..9].map{|a| a.to_s} # [“1”, “2”, “3”…] 我猜测问题的一部分是运营商的预测? 但我不确定发生了什么。 为什么我无法使用*(1..9) […]

*(星级)在Ruby中意味着什么?

可能重复: 什么是*运算符在Ruby中对此字符串执行的操作 可能在其他地方有答案,但我只是不知道如何找到它… 如果我是对的, *表示在函数定义中使用的多个参数: def hero(name, *super_powers) 但是*在代码中做了什么: Hash[*[[:first_name, ‘Shane’], [:last_name, ‘Harvie’]].flatten] # => {:first_name=>”Shane”, :last_name=>”Harvie”}