元组解包

在 var, let 或 const 语句中,可以进行元组解包。 特殊标识符 _ 可用于忽略元组中的某些部分:

  1. proc returnsTuple(): (int, int, int) = (4, 2, 3)
  2. let (x, _, z) = returnsTuple()

这大致上被视为以下内容的语法糖:

  1. let
  2. tmpTuple = returnsTuple()
  3. x = tmpTuple[0]
  4. z = tmpTuple[2]

对于 var 或 let 语句,如果值表达式是一个元组字面量, 则每个表达式将直接扩展为赋值,而不使用临时变量。

  1. let (x, y, z) = (1, 2, 3)
  2. # becomes
  3. let
  4. x = 1
  5. y = 2
  6. z = 3

元组解包也可以嵌套:

  1. proc returnsNestedTuple(): (int, (int, int), int, int) = (4, (5, 7), 2, 3)
  2. let (x, (_, y), _, z) = returnsNestedTuple()