-2
예심으로 & 오류 스위프트에서 튜플과 가변성에 대한 몇 가지 사실을 발견했지만 실제 규칙을 배우고 싶습니다. 이러한 코드를 생각해튜플 변경 가능성에 대한 규칙은 무엇입니까?
class T
{
var f : String = "hello"
}
let a = T();
let b = (f : "hello", "");
a.f = "world";
b.f = "world";
println(a.f)
println(b.f)
a
같은 고정 된 참조 동작 (당신은 개체의 같은 구성원에게 그냥 주요 참조를 변경할 수 있습니다). 따라서 C#에서는 readonly
과 같습니다.
그러나 b
은 상수 값처럼 동작합니다. 위의 코드는 컴파일되지 않습니다. 터플의 모든 멤버에 let
(또는 var
)이 적용된다고 말할 수 있습니다.
하지만 제 생각에 제 질문에서 다시 생각해 봅니다. 튜플과 그 변경 가능성에 대한 규칙은 무엇입니까?
가능한 복제본 [값에 의한 신속한 전달 또는 참조로 전달] (http://stackoverflow.com/questions/27364117/is-swift-pass-by-value-or-pass-by-reference) – matt
@ matt, 내 질문에 대한 실제 답변을 만들려면 튜플이 값 형식 ('struct') 또는 참조 ('class')로 정의되었는지 알고 있어야하지만이 정보도 찾을 수 없습니다. – greenoldman
@ greenoldman Swift 가이드에 설명 된대로 튜플은 복합 데이터 유형입니다. 따라서 'let'으로 정의하면 해당 멤버와 해당 멤버가 변경되지 않습니다. –