Tuple unpacking
In a var, let or const statement tuple unpacking can be performed. The special identifier _ can be used to ignore some parts of the tuple:
proc returnsTuple(): (int, int, int) = (4, 2, 3)
let (x, _, z) = returnsTuple()
This is treated as syntax sugar for roughly the following:
let
tmpTuple = returnsTuple()
x = tmpTuple[0]
z = tmpTuple[2]
For var or let statements, if the value expression is a tuple literal, each expression is directly expanded into an assignment without the use of a temporary variable.
let (x, y, z) = (1, 2, 3)
# becomes
let
x = 1
y = 2
z = 3
Tuple unpacking can also be nested:
proc returnsNestedTuple(): (int, (int, int), int, int) = (4, (5, 7), 2, 3)
let (x, (_, y), _, z) = returnsNestedTuple()
当前内容版权归 nim-lang.org 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 nim-lang.org .