2014-12-31 4 views
6

신속하게 반복되는 인덱스 값으로 관리되는 루프에서 "person_"과 현재 루프 인덱스의 연결 인 변수 이름을 가진 변수를 만들려고합니다. 나는 온라인 검색 그래서 여기에 게시하고 운이 없었다동적 이름으로 신속하게 변수 만들기

var person_0 = ... 
var person_1 = ... 
var person_2 = ... 
etc... 

:

그래서 내 루프는 같은 변수를 만들어 끝납니다.

감사합니다. = "사람 _ \ (인덱스)"

+5

이것은 나쁜 습관입니다. 당신이하려고하는 것을 성취 할 수있는 더 좋은 해결책이있을 것입니다. 당신이 더 많은 맥락을 제공한다면 나는 도울 수있을 것이다. – David

답변

1

하자 이름은

는 루프 전에 선언 변경 가능한 배열에 이름을 추가합니다.

그런가요?

0

신속하게 수행하려는 작업을 수행 할 수 없습니다. 변수 이름은 인간을위한 것일 뿐이며 (특히 컴파일 된 언어에서), 이는 컴파일 단계에서 제거된다는 것을 의미합니다.

하지만 실제로이 작업을 수행하려는 경우 코드 생성 도구를 사용해야합니다. 적절한 코드 생성 도구를 찾아 빌드 단계에서 실행하십시오.

3

한 가지 해결책은 모든 변수를 배열에 저장하는 것입니다. 해당 배열에 저장하는 변수의 색인은 변수 이름에 포함하려고하는 색인 ​​값과 일치합니다.

보기 컨트롤러의 상단에있는 인스턴스 변수를 만듭니다

for var i = 0; i < someVariable; i++ { 
    let person = // someValue of type WhateverTypePersonIs 
    people.append(person) 
} 

경우 :

var people = [WhateverTypePersonIs]()

그런 다음 해당 인스턴스 변수에 원하는 그러나 많은 사람들을 저장하는 루프를 만들 문제를 해결하려는 방식으로 "person_2"였던 것을 얻을 필요가 있습니다. 예를 들어 people[2]을 사용하여 그 사람에게 액세스 할 수 있습니다.

0

신속한 동적 변수 이름을 만들 수 없습니다. 달성하고자하는 것은 의 일반적인 사용 사례입니다.

Array을 작성하고 개인 데이터로 채우십시오. 나중에 색인을 통해 해당 인물에 액세스 할 수 있습니다.

var persons: [String] = [] 

// fill the array 
for i in 0..<10 { 
    persons.append("Person \(i)") 
} 

// access person with index 3 (indexes start with 0 so this is the 4th person) 
println(persons[3]) // prints "Person 3"