【发布时间】:2015-01-31 09:29:31
【问题描述】:
我有一个 Swift 函数,它返回一个包含两个值的元组。第一个值通常但并非总是用作调用者中可变状态的“更新”版本(我知道我也可以为此使用 inout 而不是元组,但这使得它在保留新状态的同时保留旧状态更烦人)。第二个值是函数生成的通常不可变的返回值,它不会覆盖任何现有的可变状态。
从概念上讲,用法如下所示:
var state = // initialize
(state, retval1) = process(state)
(state, retval2) = process(state)
(state, retval3) = process(state)
显然,这里的问题是 retval1、retval2 和 retval3 从未声明过,编译器会生气。
state必须是var,不能重新声明,所以不能写
let (state, retval) = process(state)
但是,retval 永远不会被修改,并且应该使用 let 声明作为最佳实践和良好的编码风格。
我希望以下语法可能有效,但它没有:
(state, let retval) = process(state)
我应该如何解包/解构这个元组?
【问题讨论】:
标签: swift coding-style tuples mutability destructuring