Ruby中允许“p * 1..10”打印数字1-10的功能是什么?

时间:2009-04-02 05:23:46

标签: ruby syntax splat

require 'pp'

p *1..10

这打印出1-10。为什么这么简洁?还有什么可以用呢?

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分:8)

好:

  • require pp导入漂亮的打印功能
  • p是一个使用varargs的漂亮打印方法,可以打印每个参数
  • *表示“将参数扩展为 varargs”而不是将其视为单个参数
  • 1..10是Ruby中的range sequence syntax

这是否足以解释它?如果没有,请详细说明哪一点令人困惑。