두 개의 튜플을 반환하는 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)
어떻게이 튜플을 destructuring/풀고 가야 하는가?