Swift / Welcome to Swift(3)

Minsang Kang·2022년 2월 13일
0

Swift

목록 보기
3/5
post-thumbnail

The Swift Programming Language 도서 내용을 토대로 번역 및 요약된 내용입니다.

A Swift Tour

Control Flow

조건부를 위한 if, switch
반복문 loop를 위한 for in, while, repeat-while
조건부나 반복문 근처의 괄호는 생략이 가능합니다.
if 문의 조건문은 항상 Boolean 값으로 표현되어야만 합니다.

let individualScores = [75, 43, 103, 87, 12]
var teamScore = 0
for score in individualScores {
    if score > 50 { // 조건문은 항상 Boolean 값
        teamScore += 3
    } else {
        teamScore += 1
    }
}
print(teamScore)
// Prints "11"

optional 변수는 value 또는 nil 값을 지닐 수 있는 변수이며, type 뒤에 ? 표시를 통해 생성 가능
if let 을 통해 optional 변수를 unwrapped value 로 할당할 수 있으며, block 내에서 사용이 가능

var optionalString: String? = "Hello" // String 또는 nil 값을 지닐 수 있는 변수 생성
print(optionalString == nil)
// Prints "false"

var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName { // unwrapped value 인 name 으로 할당
    greeting = "Hello, \(name)"
}

optional 변수 뒤에 ?? 표시 후 기본값을 명시하여 unwrapping 가능

let nickname: String? = nil
let fullName: String = "John Appleseed"
let informalGreeting = "Hi \(nickname ?? fullName)" // nickname 값의 unwrapping

switch 를 통해 어느 type 이든 equality 비교가 가능
let 변수명을 통해 case 문에서 상수로 할당하여 값 사용이 가능
case 문이 실행된 후 switch 문을 탈출하게 되므로, case 문의 코드 마지막 부분에 break 를 명시하지 않아도 된다.

let vegetable = "red pepper"
switch vegetable { // 어느 type 이든 가능
case "celery":
    print("Add some raisins and make ants on a log.")
case "cucumber", "watercress":
    print("That would make a good tea sandwich.")
case let x where x.hasSuffix("pepper"): // x 변수로 할당되어 사용 가능
    print("Is it a spicy \(x)?")
default:
    print("Everything tastes good in soup.")
}
// Prints "Is it a spicy red pepper?

for in 형식을 통해 dictionary 변수의 key, value 값들을 순환할 수 있다. 다만, dictionary 변수는 unordered collection 이므로 임의의 순서로 반환된다.

let interestingNumbers = [
    "Prime": [2, 3, 5, 7, 11, 13],
    "Fibonacci": [1, 1, 2, 3, 5, 8],
    "Square": [1, 4, 9, 16, 25],
]
var largest = 0
for (_, numbers) in interestingNumbers {
    for number in numbers {
        if number > largest {
            largest = number
        }
    }
}
print(largest)
// Prints "25"

while 문을 사용하여 조건이 변경될 때 까지 반복하여 block 의 code(loop)를 실행할 수 있다.
repeat while 문을 사용하여 조건문을 block 뒤에 위치할 수 있으며, loop 가 적어도 한번 실행되도록 할 수 있다.

var n = 2
while n < 100 { // 조건문 loop 전에 명시
    n *= 2
}
print(n)
// Prints "128"
var m = 2
repeat {
    m *= 2
} while m < 100 // 조건문 loop 후에 명시
print(m)
// Prints "128"

..< 또는 ... 식을 통해 범위를 만들 수 있으며, loop에서 index 값을 사용할 수 있다.
..< 의 경우 우측 범위숫자는 미포함되며, ... 의 경우 우측 범위숫가가 포함된다.

var total = 0
for i in 0..<4 {
    total += i
}
print(total)
// Prints "6"

func

func hasSuffix(_ suffix: String) -> Bool
문자열의 마지막 부분의 일치여부 반환 함수
Documentation / Swift / String / hasSuffix(_:)

Reference

다음에서 발췌
docs.swift.org
The Swift Programming Language (Swift 5.5) Apple Inc.
이 자료는 저작권에 의해 보호됩니다.

profile
 iOS Developer

0개의 댓글