Ruby语言的数组分解(Decomposition)

1.用于并行赋值

当右侧为一个数组时,此数组会被“自动解包”。

#左侧数量等于右侧数量
(a, b) = [1, 2]
#简写(省略左侧的圆括号)
a, b = [1, 2]
p a, b  # 1 2

#左侧数量小于右侧数量
(a, b) = [1, 2, 3]
#简写(省略左侧的圆括号)
a, b = [1, 2, 3]
p a, b  # 1 2
#右侧多余的值会被打包成数组
(a, b, *c) = [1, 2, 3, 4, 5]
p a, b, c  # 1 2 [3, 4, 5]

#左侧数量大于右侧数量
(a, b) = [1]
#简写(省略左侧的圆括号)
a, b = [1]
p a, b  # 1 nil
#注意:左侧的圆括号()不可以省略。
a, (b, c) = 1, [2, 3]
p a, b, c  # 1 2 3

2.用于函数参数

#注意:形参的圆括号()不可以省略。

#形参数量等于实参数量
def f((a, b))
  p a, b
end
f([1, 2])  # 1 2

#形参数量小于实参数量
def f((a, b))
  p a, b
end
f([1, 2, 3])  # 1 2
#右侧多余的值会被打包成数组
def f((a, b, *c))
  p a, b, c
end
f([1, 2, 3, 4, 5])  # 1 2 [3, 4, 5]

#形参数量等于实参数量
def f((a, b, c))
  p a, b, c
end
f([1, 2])  # 1 2 nil
#注意:形参的圆括号()不可以省略。
def f(a, (b, c))
  p a, b, c
end
f(1, [2, 3])  # 1 2 3

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/rubyexp/36740.html

(0)
huoxiaoqiang的头像huoxiaoqiang
上一篇 1天前
下一篇 2022年8月28日 17:04

相关推荐

  • Ruby语言的&运算符

    1.用于方法的接收者 此时的 & 运算符称为安全导航(Safe Navigation)运算符。 运算符 描述 接收者&.方法名() 如果接收者为 nil,则不运行方法调用,直接返回 nil。如果接收者不为 nil,则就跟正常方法调用一样。 2.用于方法的参数 使用场景 描述 &块形参名…

  • Ruby语言的展开(Splat)运算符

    1.*运算符 * 运算符支持展开任何实现了 to_a 方法的对象。 1.1用于变量赋值 1.2用于函数实参 具体规则参考“用于变量赋值”。 2.**运算符 ** 运算符支持展开任何实现了 to_hash 方法的对象。 2.1用于变量赋值 Ruby 语言不支持用于变量赋值。 2.2用于函数实参

  • Ruby代码的三种运行方式

    1.ruby -e <command>命令方式 2.ruby hello_world.rb文件方式 hello_world.rb 文件代码清单: 启动终端,使用 cd 命令,切换到存放 hello_world.rb 文件的目录。执行以下命令: 3.irb交互方式

    Ruby经验 2025年3月15日
    0670

发表回复

登录后才能评论