2016-10-26 2 views
4

Swift 3 documentation 상태 :스위프트에 함수 매개 변수가 변경되지 않는 이유는 무엇입니까? 매개 변수는 불변

함수 매개 변수는 기본적으로 상수이다.

함수로 전달 될 때 그것은 또한 states that 값 형식이 복사됩니다

문자열, 배열, 그리고 그들이 함수 나 메서드에 전달 될 때 사전이 복사됩니다.

그럼 매개 변수가 인 이유는 무엇입니까?은 변경 불가능하고 복사됩니까? 인수가 상수이면 함수의 범위에 해당 값의 복사본이 필요하지 않습니다. 인수가 복사되면 전달 된 원래 변수를 함수에서 수정할 수 없습니다 (값 유형의 경우).

또한 불변성은 처음에 명시 적으로 (다시 한번) 로컬 변수에 복사하지 않고 인수를 로컬로 변경할 수 없으므로 불편한 것처럼 보입니다.

설명서를 잘못 읽었습니까? 이것이 왜 그런지 좋은 이유가 있습니까?

+0

참고 - 문자열, 배열 및 사전은'class' 유형 (참조 유형)이 아닌'struct' 유형 (값 유형)이기 때문에 복사됩니다. 복사는 매개 변수가 아닌 모든 할당에 대해 수행됩니다. – rmaddy

+0

예, 이것은 할당에 의미가 있지만, 값 유형이 복사되고 매개 변수로 불변으로 변경되는 이유에 대한 혼란이 있습니다 (둘 중 하나는 충분해야합니다). – kennysong

+1

모든 매개 변수를'let'으로 생각하십시오. – rmaddy

답변

관련 문제