프로그래밍 언어에서 자주 사용하는 것들인 제어문, 문자열, 함수에 대해서 적어보려한다. 다른 언어와 많은 점이 다르지는 않기 때문에 한 포스팅에서 모두 알아보려 한다. 다만 Switch, String(unicode, index 문제 때문)의 경우는 조금 다르니 추가로 알아보는 것을 추천드린다. 함수는 사실 closure의 일종인데, 이는 이 다음 글에서 알아보도록 하고, 이번에는 일반적으로 아는 함수의 개념으로 이해하고 글을 읽어보자.
fallthrough
키워드 활용default
필요switch count {
case 0:
result = "no"
case 1..<5:
result = "few"
default:
result = "many"
}
switch point {
case (let x, 0):
print("x축 위에 있음")
case (0, let y):
print("y축 위에 있음")
case (let x, let y) where x == y:
print("y = x 위에 있음")
case (let x, let y) where x == -y:
print("y = -x 위에 있음")
case (let x, let y):
print("좌표평면 위에 있음")
}
동일한 Type의 값을 저장할 수 있는 Ordered List
동일한 값이 다른 위치에서 반복적으로 낭로 수 있음
Foundation의 NSArray와 bridge
표현
let array: Array<SomeType>()
let array: [SomeType]
let array = [Int]()
let array = Array<Int>()
접근
array[0] = "A"
array[1..3] = ["a", "b", "c"]
let someSet: Set<Int>()
let genres: Set<String> = ["Rock", "Classic", "Hip hop"]
public func hash(into hasher: inout Hasher)
key, value의 쌍을 저장하는 collection
key, value는 각각 type이 지정되어야 함
key는 dictionary안에서 unique하며, value의 identifier로 동작
key는 hashable
순서 없이 저장한다.
표현
let a: Dictionary<KeyType, ValueType>
let b: [KeyType: ValueType]
a = Dictionary<Int: String>()
b = [Int: String]()
var airports: [String, String] = ["XYZ": "Toronto", "DUB": "Dublin"]
var airports = ["XYZ": "Toronto", "DUB": "Dublin"]
메서드
#
#""Hello World""#
= Hello world\n
은 아래와 같이 사용#"Line1\#nLine2#
+
가능"\(name) 는 \(food)을 먹습니다"
let precomposed: Character = "\u{D55C}" // 한
let decomposed: Character = "\u{1112}\u{1161}\u{11AB}" // ㅎ,ㅏ,ㄴ = 한으로 표현됨
일급 함수
argument label
parameter name
Variadic parameters
0개 이상의 특별한 타입을 나열해서 파라미터로 넘길 수 있음
...
을 넣어서 사용
이렇게 선언된 경우 함수안에서 해당 type의 Array로 사용할 수 있음
func sum(values: Int...) -> Int {
var result = 0
for value in values {
result += value
}
return result
}
sum(10, 20, 30) // 60
inout parameters