2016-12-16 1 views
0

나는변경 객체 값은 globaly

obj.var = newValue 

그러나 같은 객체 자체의 값을 변경하려면 for 루프에서의

for item in myArray.filter(...) { 
    item.var = newValue 
} 

같은 로컬이 단지 효과 로컬 복사본을이 가져올 때. 나는

index = myArray.index(of: item) 
myArray[index].var = newValue 

처럼 원래 배열 내의 인덱스를 사용하여 작업을 수행 할 수 있습니다 그러나 이것은 너무 이상하고 매우 우아하지 나에게 확대됨하지 보인다. 더 간단한 해결책이 있고, 읽기 쉽고 (쓰고) 어쩌면 모든 목록/배열에 대한 일반적인 해결책일까요? 이 일반적인 작업을 어떻게 처리합니까?

(I 스위프트 3.0을 사용하고 있습니다)

+0

첫 번째 코드 줄은 ** 특정 ** var (또는 ** 특정 배열 인덱스 ** var)를 업데이트하려고하지만 다음 코드 조각 (for ..in 루프)는 ** 모든 배열 ** 변수를 업데이트하려는 소망을 제안합니다. 후자의 경우, 0 .. dfd

+0

루프는 예입니다. 개체의 값을 변경하려면 "item"의 로컬 버전이 아니라 myArray에서도 (additionaly). 그래서 myArray에 루프를 다시 실행하면 업데이트 된 값이 있습니다. 또한 필터링 된 부분 집합에서 발생할 수 있으므로 루프 내에서 사용되는 인덱스가 전역 배열 (myArray)에 대해 동일하지 않습니다. –

+0

클래스 구조체를 찾으려면 'obj' 선언을 표시하십시오. – shallowThought

답변

2

나는 당신의 var에 값 형식이 아닌 클래스라고 생각합니다. 그래서 당신이 그것을 수업으로 만들면. 당신이하고 싶은 일을 할 것입니다