5
require 'pp'

p *1..10

这打印出 1-10。为什么这么简洁?你还能用它做什么?

4

2 回答 2

13

它是“splat”运算符。它可用于分解数组和范围并在分配期间收集值。

这里收集分配中的值:

a, *b = 1,2,3,4

=> a = 1
   b = [2,3,4]

在此示例中,内部数组(第[3,4]一个)中的值被分解并收集到包含数组中:

a = [1,2, *[3,4]]

=> a = [1,2,3,4]

您可以定义将参数收集到数组中的函数:

def foo(*args)
  p args
end

foo(1,2,"three",4)

=> [1,2,"three",4]
于 2009-04-02T05:38:53.397 回答
8

好:

  • require pp导入漂亮的打印功能
  • p是一个带有可变参数的漂亮打印方法,它漂亮地打印每个参数
  • *表示“将参数扩展可变参数”,而不是将其视为单个参数
  • 1..10 是Ruby中的范围序列语法

这是否充分解释了它?如果不是,请详细说明哪一点令人困惑。

于 2009-04-02T05:36:25.523 回答