개발/Mobile

[Swift] Swift 강의.05 - for, while

hojak99 2018. 3. 12. 09:27

Control Flow

Control Flow 는 말 그대로 순서의 흐름을 말한다. 먼저, for-in 과 while 문에 대해서 알아보는 시간을 가지겠다.

For-In

쉽게 생각해서 다른 언어들의 for 문을 생각하면 된다.
필자도 Java 나 C++, JS 에서의 for 문을 생각했는데 Swift 에서는 조금 사용법이 달라서 헷갈리거나 좀 어려울 수도 있다.
주의 깊게 살펴보자,,

Example

다음의 예제코드에서는 배열 안에 있는 데이터들을 각각 출력시키는 코드이다.

let test = ["One", "Two", "Three"];

for temp in test {
    print(temp);
} 

// "One"
// "Two"
// "Three"

다음 예제는 Dictionary 에 대한 Key, Value 값을 출력시크는 예제이다.

let test = [1: "Man", 2: "Girl", 3: "Woman"];

for (key, value) in test {
    print("\(key) : \(value)");
}

// 1, Man
// 2, Girl
// 3, Woman
for index in 1...5 {
    print(index);
}

// 1
// 2
// 3
// 4
// 5
let base = 3;
let power = 10;
var answer = 1;

for _ in ...power {
    answer *= base;
}
print(answer);

// 59049
let length = 60;

for(temp in 0..<length) {
    print (temp);
}

// 1
// 2
..
// 58
// 59







for, while

//: Playground - noun: a place where people can play
import UIKit

// 참고로 while, for 문은 자바처럼 조건문에 괄호가 없다.
var num = 0;
while num < 5 {
    num += 1;
    print(num);         // 1, 2, 3, 4, 5
}
// num++, num-- 같은 연산자는 사용하지 못한다.

let names = ["A", "B", "C", "D"];
for name in names {
    print(name);        // A, B, C, D
}

let tempDictionary = ["A" : 1, "B" : 2, "C" : 3];
for(key, value) in tempDictionary {
    print("\(key), \(value)");      // C, 3  B, 2, A, 1
}

for index in 1...5 {
    print(index);       // 1, 2, 3, 4, 5
}


for _ in 1...5 {
    print("HI");        // HI HI HI HI HI
}

let minutes = 60;
for tickMark in 0..<minutes {
    print(tickMark);       // 0, 1, 2 ..... 59
}

let minuteInterval = 5;
// by 부분에 1을 입력하면 1씩 증가되는데 지금은 minuteInterval로 설정했기 때문에 5씩 증가하는 것이다.
for tickMark in stride(from: 0, to: minutes, by: minuteInterval) {
    print(tickMark);    // 0, 5, 10, 15, ..... 55
}

// to 대신 through 로 설정하면, 쉽게 말해서 <= 로 설정이된다. to는 <
for tickMark in stride(from: 0, through: minutes, by: minuteInterval) {
    print(tickMark);    // 0, 5, 10, 15, ..... 60
}

/*
 해당 문법은 존재하지 않는다. Swift2 까지는 있었다고 한다.
 for(int i =0; i<5; ++i) {
 ....
 }
 */


반응형