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

Pau*_* H. 5 ruby syntax splat

require 'pp'

p *1..10
Run Code Online (Sandbox Code Playgroud)

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

sri*_*ris 13

它是"splat"运算符.它可用于在分配期间爆炸数组和范围并收集值.

这里收集了作业中的值:

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

=> a = 1
   b = [2,3,4]
Run Code Online (Sandbox Code Playgroud)

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

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

=> a = [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

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

def foo(*args)
  p args
end

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

=> [1,2,"three",4]
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 8

好:

  • require pp 导入漂亮的打印功能
  • p 是一个使用varargs的漂亮打印方法,它可以打印每个参数
  • *意味着"将参数扩展 varargs"而不是将其视为单个参数
  • 1..10是Ruby中的范围序列语法

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