English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 문서에서는 for-in 반복의 사용 예제와 변형
for-in 반복을 일정한 시간 내에 일련의 작업을 실행하는 데 사용합니다. 이 반복은 배열의 항목, 범위 또는 문자열의 문자와 같은 어떤 시퀀스를 순회합니다.
우리는 또한 for-in 반복은 일정한 시간 내에 반복된 과정을 수행합니다.
사람이 화면에 Hello, World를 출력하도록 요청하는 프로그램을 작성해야 한다고 상상해 보세요! 당신의 해결책은 다음과 같을 것입니다:
print("Hello, World!")
그들이 생각을 바꿔 화면에 Hello, World를 5번 출력하도록 요청하는 프로그램을 작성해야 한다면 어떻게 합니까?. 반복에 대한 지식이 없다면, 당신의 해결책은 다음과 같을 수 있습니다:
print("Hello, World!") print("Hello, World!") print("Hello, World!") print("Hello, World!") print("Hello, World!")
아니요, 다섯 번 이상 동일한 코드를 작성하여 동일한 작업을 수행하는 것은 시간을 낭비합니다. 그렇다면, 누군가가 화면에 Hello, World!를 수백만 번 출력하도록 요청하는 프로그램을 작성해야 한다면 어떻게 합니까?
초보적인 해결책은 print 문을 주어진 횟수만큼 작성하는 것입니다. 이렇게 하면 이상하죠? 그러나 for-in 반복의 몇 줄 코드는 더 나은 해결책을 찾을 수 있습니다:
for i in 1...100 { //스크린에 Hello World 출력 100번 print("Hello, World!") }
문법에 대해 걱정하지 마세요. 아래에서 설명할 것입니다.
Swift에서 for in 반복을 생성하는 방법은 다음과 같습니다:
for <value> in <range> { <some work here> }
위 반복은 범위를 순회하며, <value> 변수를 통해 범위에서 반환된 각 요소에 접근할 수 있습니다. 범위에 대해 모르시면 다음 기사를 확인하세요:Swift 범위.
반복되는 시퀀스는 <range>입니다.
를 통해 <value>를 범위의 첫 번째 숫자로 설정하고 반복 내의 문장 < 이곳의 일부 작업 >
문장이 실행되면, <value>는 <range>에 포함된 두 번째 값을 포함하는 것으로 업데이트되고, 문장 <이곳의 일부 작업> 다시 실행됩니다.
이 과정은 범위의 끝에 도달하여 반복을 중지합니다.
for i in 1...3 { print("Hello world!. Value is \(i)") }
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
Hello world!. Value is 1 Hello world!. Value is 2 Hello world!. Value is 3
위 프로그램에서 반복할 시퀀스의 범위는1到3.
i의 값이 범위(1)의 첫 번째 숫자, 그리고 각 반복에서 범위의 다음 숫자로 업데이트됩니다. 이 과정은 범위(3)의 종료.
반복 | 从范围(i)返回的值 | 출력 |
---|---|---|
1 | 1 | Hello world!. Value is 1 |
2 | 2 | Hello world!. Value is 2 |
3 | 3 | Hello world!. Value is 3 |
만약 반복 내에서 범위 값을 사용하지 않는다면, Swift에서 (밑줄 _)를 사용하여 버릴 수 있습니다. 다음과 같이 사용할 수 있습니다:
for _ in <range> { <some work here> }
//이 예제에서는 값을 무시하고 반복 범위 연산자를 사용합니다 for _ in 1..<3 { print("Hello world!") }
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
Hello world! Hello world!
위의 프로그램에서는 다음과 같이 사용됩니다반복 범위 연산자(.. <),따라서 방문해야 할 시퀀스의 범위는1到2그 중에는 하한을 포함합니다 (1)을 포함하지 않습니다.3)를 무시합니다。
밑줄 _는 범위 (1)의 값을 가져와서 print 문을 수행합니다. 다시 print 문을 호출하여 다음 반복을 수행하고, 과정이 끝납니다.2是该范围内的最后一个值。
반복 | 범위에서 반환된 값 | 출력 |
---|---|---|
1 | 버리기 | Hello world! |
2 | 버리기 | Hello world! |
만약 반복이 각 반복에서 특정 고정 값을 (반복 범위 대신) 증가시키려면 stride 메서드를 사용해야 합니다.
let interval = 2 for i in stride(from: 1, to: 10, by: interval) { print(i) }
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
1 3 5 7 9
위의 프로그램에서 stride 함수는 다음 숫자 시퀀스를 반환합니다:1、3、5、7、9.
i의 값을 시퀀스 (1)의 첫 번째 숫자를 설정하고, 컨솔에서 " 1”。
이 문장을 실행한 후, i의 값을 다른 값을로 업데이트합니다 (3),그리고 다시 print 문을 호출합니다. 이 과정은 시퀀스의 모든 요소를 방문할 때까지 지속됩니다.
값 | 조건(Value < End) | i (출력) |
---|---|---|
1 | 1 < 10 (true) | 1 |
1 + 2 = 3 | 3 < 10 (true) | 3 |
1 + 2 * 2 = 5 | 5 < 10 (true) | 5 |
1 + 3 * 2 = 7 | 7 < 10 (true) | 7 |
1 + 4 * 2 = 9 | 9 < 10 (true) | 9 |
1 + 5 * 2 = 11 | 11 < 10 (false) | Stops |
예를 들어, 다음과 같은 문자열 배열이 있다고 가정해 보세요. 배열에 대해 모르시다면, 배열을 여러 가지 값을 저장할 수 있는 단일 컨테이너로 볼 수 있습니다. 보다 자세한 설명은 다음을 참조하세요.Swift 배열.
let programmingLanguages = ["Swift", "Java", "Go", "JavaScript", "Kotlin", "Python"]
누군가가 모든 프로그래밍 언어를 출력하라고 말해주면 어떻게 해야 하나요?
일반적으로 인덱스 값 programmingLanguages[0], programmingLanguages[1]... 이렇게 모든 요소에 대해 접근할 수 있습니다. 이어서 모든 요소를 얻기까지 이 과정을 반복합니다. 하지만 이는 복잡합니다.
따라서 루프는 유용합니다. for in 루프를 사용하여 반복할 수 있습니다:
let programmingLanguages = ["Swift", "Java", "Go", "JavaScript", "Kotlin", "Python"] for language in programmingLanguages { print(language) }
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
Swift Java Go JavaScript Kotlin Python
위 프로그램에서 반복할 시퀀스는 문자열 배열입니다.
language의 값은 배열의 첫 번째 항목으로 설정되고, 루프 내의 print 문장이 실행되어 컨솔에 “Swift”가 출력됩니다.
문장이 실행되면, language는 배열의 다음 항목으로 업데이트되고, 다시 print 문장이 호출됩니다. 이 과정은 배열의 마지막 항목까지 지속됩니다.
Swift에서는문자열집합이기 때문에, for 루프를 사용하여 문자열의 각 문자를 방문할 수 있습니다.
for value in "I♥Swift!" { print(value) }
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
I ♥ S w i f t !
배열의 인덱스(배열 내 요소의 위치, 즉 0,1、2),이 경우 enumerated 메서드를 사용해야 합니다:
let programmingLanguages = ["Swift", "Java", "Go", "JavaScript", "Kotlin", "Python"] for (index, language) in programmingLanguages.enumerated() { print("\(index):\(language)") }
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
0:Swift 1:Java 2:Go 3:JavaScript 4:Kotlin 5:Python
이 경우, enum 메서드는 배열의 각 항목에 대해 인덱스(Int)와 값(String)으로 구성된 튜플을 반환합니다 (Int, String). 예를 들어: (0,Swift), (1,Java)
사용하여 for-in 루프에서 각 항목을 순차적으로 방문할 수 있습니다. Tuple(원소 집합)에 대해 잘 알지 못하시다면, 다양한 유형의 값을 포함할 수 있는 컨테이너로 간단히 생각하시면 됩니다.
또한 사용할 수 있습니다wherefor 루프 내용을 필터링합니다
for value in "I♥Swift!" where value != "!" { print(value) //반사호 제거 }
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
I ♥ S w i f t
위의 프로그램에서 반복할 시퀀스는 문자열(문자 집합)입니다.
value는 문자열의 첫 번째 문자로 설정되고 where 조건을 사용하여 확인됩니다. 조건이 true를 반환하면 루프 내의 블록(프린트 문장)이 실행되고 컨트롤 콘솔에서 "I"를 출력합니다.
문장이 실행되면 value는 문자열의 다음 문자로 업데이트되고 다시 조건을 확인합니다. 조건이 false를 반환하면 그 블록은 실행되지 않으며 value는 다음 문자로 업데이트됩니다.
문자열의 마지막 문자에 도달할 때까지 이 과정이 계속됩니다.
반복 | value | value != "!" | 출력 |
---|---|---|---|
1 | I | true | I |
2 | ♥ | true | ♥ |
3 | S | true | S |
4 | w | true | w |
5 | i | true | i |
6 | f | true | f |
7 | t | true | t |
8 | ! | false |