2 つの値のタプルを返す Swift 関数があります。最初の値は、常にではありませんが、通常、呼び出し元の変更可能な状態の一部の「更新された」バージョンとして使用されることを意図しています (inout
タプルの代わりにこれを使用することもできますが、それはそれをより面倒にします新しい状態を維持しながら古い状態を維持します)。2 番目の値は、通常、関数によって生成される不変の戻り値であり、既存の変更可能な状態をオーバーライドすることは意図されていません。
概念的には、使用法は次のようになります。
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)
このタプルを解凍/分解するにはどうすればよいですか?