exi*_*all 5 coding-style tuples destructuring mutability swift
我有一个 Swift 函数,它返回两个值的元组。第一个值通常(但并非总是)用作调用者中一段可变状态的“更新”版本(我知道我也可以使用inout它而不是元组,但这使得它更烦人保留旧状态的同时保留新状态)。第二个值是函数生成的通常不可变的返回值,其无意覆盖任何现有的可变状态。
从概念上讲,用法如下:
var state = // initialize
(state, retval1) = process(state)
(state, retval2) = process(state)
(state, retval3) = process(state)
Run Code Online (Sandbox Code Playgroud)
显然,这里的问题是retval1、retval2、 和retval3从未被声明,编译器会生气。
state必须是 avar并且不能重新声明,所以我不能写
let (state, retval) = process(state)
Run Code Online (Sandbox Code Playgroud)
但是,retval永远不会被修改,并且应该let作为最佳实践和良好编码风格的问题来声明。
我希望以下语法可能有效,但事实并非如此:
(state, let retval) = process(state)
Run Code Online (Sandbox Code Playgroud)
我应该如何解压/解构这个元组?
let我不相信\xe2\x80\x99t 存在\xe2\x80\x99s 与和同时绑定的语法var。
有趣的是,您可以在以下位置执行此操作switch:
let pair = (1,2)\nswitch pair {\ncase (var a, let b):\n ++a\ndefault:\n break\n}\nRun Code Online (Sandbox Code Playgroud)\n\n但是(var a, let b) = pair(或类似的变体) don\xe2\x80\x99t 似乎是可能的。
| 归档时间: |
|
| 查看次数: |
4682 次 |
| 最近记录: |