2015-01-16 3 views
0

바보에게 초보자 스위프트 질문을 작동하지 않습니다 을 나는 놀이터에서 일을 다음 코드 3 줄을 기대하고있다 : 오류수정 내용은

error: '@lvalue $T5' is not identical to 'String' 
items[1] = "Banana" 
에게 이제

let items = ["Apple", "Orange", "Pear"] 
items[1] = "Banana" // error here 
items 

내용을 어레이로 변경 불가능 함을 Swift에서 (필자는) 알고 있습니다. XCODE 6.1.1을 사용합니다.

어떤 일이 벌어지고 있는지 알 수 있습니까?

덕분에이 이전 버전에서 가능했던이 스레드를 바탕으로

는 : Why in immutable array in swift value can be changed?

+0

일반적으로 변경할 수 없음을 의미합니다. 변경 불가능한 배열을 변경 (쓰기) 할 수있는 이유가 확실하지 않습니다. – reggaeguitar

+0

https://developer.apple.com/library/mac/documentation/ Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html - "배열이나 사전을 상수에 할당하면 해당 배열이나 사전은 변경되지 않으며 크기와 내용은 변경할 수 없습니다." –

+0

https://itunes.apple.com/us/book/swift-programming-language/id881256329?isInPurchasedView=true&mt=11 –

답변

1

당신이 let 쓰기 , 당신은 불변의 변수를 정의합니다. 대신 var을 사용하십시오. 이렇게하면 변경할 수있는 변수를 정의 할 수 있습니다.

0

let 키워드를 사용하면 상수가으로 표시됩니다. 정의 상수는 수정할 수 없습니다.

당신은/다를 수 있습니다 것입니다 변수, 따라서 물건을 선언 할 var 키워드를 사용하고 싶습니다. 사과 Swift 문서에서

:

상수와 변수

상수와 변수의 이름과 같은 번호로서 특정 유형 (의 값 (예 maximumNumberOfLoginAttempts 또는 welcomeMessage)를 연결할 10 또는 문자열 "Hello"). 상수의 값은 일단 설정되면 변경할 수 없지만 변수는 나중에 다른 값으로 설정할 수 있습니다. 사용되기 전에

선언 상수와 변수

상수와 변수를 선언해야합니다. 은 let 키워드로 변수를 선언하고 var 키워드를 사용하여 변수를 선언합니다.

하자 maximumNumberOfLoginAttempts = 10

var에 currentLoginAttempt = 0

1

내 앞에 언급 한 바와 같이 다음은 상수와 변수는 로그인의 수를 추적하는 을 사용하는 방법의 예는 사용자가 만든 모든 시도의 배열을 변경하려면 var 배열을 사용하십시오.

질문 아래에 조금 당신이 링크를 게시하고 답변 내부 주어졌다 : 스위프트의

배열이 완전히 사전 및 문자열과 같은 의미는 항상 스위프트에 있었다 가치를 가지고 재 설계되었습니다. 이 은 다양한 가변성 문제를 해결합니다. 'let'배열은 완전히 불변이며 'var'배열은 완전히 변경 가능합니다. 사전 및 문자열을 사용하여 을 올바르게 작성하고 더 깊은 문제를 해결합니다. 값 NSArray 또는 C 배열에 익숙하다면 의미가 놀라운 것일 수 있습니다. 배열의 복사본은 이제 효율적인 지연 복사 구현을 사용하여 요소의 전체 및 독립 복사본을 모두 만듭니다. 배열의 주요 변경 사항은 이며 아직까지 의 성능 문제가 해결되었습니다. 자세한 내용은 Swift 프로그래밍 언어 ( )를 참조하십시오. (17192555)