본문 바로가기

ComputerScience/ios App(Storyboard)

ios - 6 swift 기본문법(Tuple, Flow Control)

728x90

1 swift

- ios app 개발을 할때 사용하는 언어

2 playground

- 간단하게 swift코드를 돌려볼 수 있는 곳

 

- file -> new -> playground

- blank -> next

3 간단한 코드 실행해 보기

import UIKit

let value = arc4random_uniform(100)
print("value : \(value)")

- 아래 검은 창에 콘솔 출력 내용을 볼 수 있다

- 우측 검은 창에 현재 value의 값과 함수의 결과를 미리 볼 수 있다.

- 코드 실행 버튼

4 Tuple

- 서로 다른 데이터를 묶어서 저장하는 공간

let person = (10, "Tom")

let age = person.0
let name = person.1

- person은 10 과 Tom이라는 정보를 가지고 있는 변수다

- person.0, person.1로 각 요소에 접근 가능

- type은 (Int, String)이다

let person2 = (age: 10, name: "Tom")

let age = person2.age
let name = person2.name

- 이렇게 각 요소의 이름을 지정해서 접근할 수도 있다.

let coordinate = (x: 1, y: 2, z:3)

//let x = coordinate.x
//let y = coordinate.y
//let z = coordinate.z
let (x, y, z) = coordinate

- 각 요소를 하나하나 접근하지않고 튜플째로 (x, y, z)에 각각 대입할 수 있다.

5 flow control

*while과 if-else

var i = 0
//if (i<10) is also available
while i < 10 {
    //if (i==5) is also available
    if i==5 {
        break
    }
    i += 1
}

- 조건식이 들어가는 곳에 ()를 생략해도 된다.

*do-while

// do while
var i = 0

repeat {
    print(i)
    i += 1
} while i < 10

- do..while문에서 do 를 repeat으로 대체해서 쓰면된다. 

 

var sum = 0

let closedRange = 0...10
let halfClosedRange = 0..<10

for i in closedRange {
    sum += i
}

print(sum)
sum = 0

for i in halfClosedRange {
    sum += i
}
print(sum)

- 0...10, 0..<10 처럼 범위를 한번에 변수에 저장할 수 있다.

- i in closedRange처럼 원소들을 탐색하면서 그 원소들의 값을 i에 담아서 for문 안에서 사용할 수 있다.

var closedRange = 0...10

for _ in closedRange {
    print("hi")
}

- 만약 i를 사용하지 않고 단순히 11번 반복 수행 할 것이라면 다음과 같이 쓸 수 있다.

- 앞으로 사용하지 않는 변수를 _로 대체하는 것이다.

var closedRange = 0...10

for i in closedRange where i%2 == 0 {
    print(i)
}

- closedRange안의 원소들을 하나씩 꺼내올때 뒤의 조건을 만족할때만 코드를 실행하도록 할 수 있다.

*switch

let num = 10

switch num {
case 0:
    print("0")
case 0...10:
    print("0...10")
case 10:
    print("10")
default:
    print("default")
}

- 반드시 모든 케이스를 정의해야 한다. 위 코드에서 default가 없으면 에러이다.

- switch에서 각 케이스에 해당되는 내용을 실행하고 나면 switch를 빠져나온다.

- 위 코드에서는 0...10만 출력되고 종료된다.

- switch의 조건식에는 int말고 다른 타입도 들어갈 수 있다.

let num = 10

switch num {
case _ where num%2 == 0:
    print("even number")
default:
    print("odd number")
}

- 이렇게 case에서 조건을 검사할 수 있다.

let coordinate = (x: 0, y: 10)

switch coordinate {
case (0,0):
    print("원점")
case (_,0):
    print("x축 위의 점")
case (0,_):
    print("y축 위의 점")
default:
    print("odd number")
}

- tuple을 switch문에 활용해 보자.

let coordinate = (x: 0, y: 10)

switch coordinate {
case (0,0):
    print("원점")
case (let x,0):
    print("x축 위의 점 \(x)")
case (0,let y):
    print("y축 위의 점 \(y)")
default:
    print("default")
}

- _대신 값을 받아서 활용할 수도 있다.

let coordinate = (x: 10, y: 10)

switch coordinate {
case (0,0):
    print("원점")
case (let x,0):
    print("x축 위의 점 \(x)")
case (0,let y):
    print("y축 위의 점 \(y)")
case (let x,let y) where x==y:
    print("y=x 위의 점")
default:
    print("odd number")
}

- where를 활용해서 조건을 추가하여 case를 만들 수 있다.

6 sin함수 그리기

- sin함수를 쓰기 위해서는 Foundation을 import해야한다.

- 오른쪽에 네모난 show result버튼을 누르면 그림을 볼 수 있다.

 

 

728x90
반응형