【问题标题】:What's the feature in Ruby that allows "p *1..10" to print out the numbers 1-10?Ruby 中允许“p *1..10”打印出数字 1-10 的功能是什么?
【发布时间】:2010-10-17 01:01:03
【问题描述】:
require 'pp'

p *1..10

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

【问题讨论】:

    标签: ruby syntax splat


    【解决方案1】:

    嗯:

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

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

    【讨论】:

      【解决方案2】:

      它是“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]
      

      【讨论】:

      • 为什么这被否决了?我的回答没有详细说明任何一个方面,因为我不知道是哪一点让 OP 感到困惑,但这对 splat 操作员来说非常有用。
      猜你喜欢
      • 1970-01-01
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 2016-04-18
      • 2021-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多