排队

p *1..10

做的事情和

(1..10).each { |x| puts x }

这将为您提供以下输出:

$ ruby -e "p *1..10"
1
2
3
4
5
6
7
8
9
10

例如,在使用textmate时,这是一个很好的快捷方式,但星号的作用是什么?这是怎么回事?在网上找不到任何东西...

推荐答案

这是splat operator.您经常会看到它用于将数组拆分为函数的参数.

def my_function(param1, param2, param3)
  param1 + param2 + param3
end

my_values = [2, 3, 5]

my_function(*my_values) # returns 10

更常见的是,它用于接受任意数量的参数

def my_other_function(to_add, *other_args)
  other_args.map { |arg| arg + to_add }
end

my_other_function(1, 6, 7, 8) # returns [7, 8, 9]

它也适用于多个赋值(尽管这两个语句在没有splat的情况下都可以使用):

first, second, third = *my_values
*my_new_array = 7, 11, 13

以你的例子来说,这两者是等价的:

p *1..10
p 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Ruby相关问答推荐

当数据包含换行符时,Ruby PKCS7 无法验证

如何在 Ruby 中正确编写代码?以便它产生正确的输出?

从 ruby​​ 脚本运行另一个 ruby​​ 脚本

如何替换 ruby​​ 中模式的每个实例?

这些 Ruby 命名空间约定之间有什么区别?

您如何将 Cucumber 场景标记为待处理

删除 Ruby 数组中的 nil 和空白字符串

如何判断是否安装了gem?

如何从 SystemStackError 中获取回溯:堆栈级别太深?

如何在 ruby​​ rake 中明确地失败任务?

如何删除Ruby中数组中满足条件的所有元素?

Jekyll - 找不到命令

Javascript 是否有类似 Ruby 的 method_missing 功能?

在 ruby​​ 的超类中调用另一个方法

在 Ruby 中将散列扁平化为字符串

在 Ruby 中获取本月的最后一天

如何使用 Nokogiri 删除 node ?

使用 Liquid 标记在 Jekyll 中获取今天的日期

要散列的散列数组

查找两个数组的共同点