수색…


소개

if, else if 및 else와 같은 키워드를 포함하는 조건식은 부울 조건에 따라 다른 동작을 수행 할 수있는 기능을 Swift 프로그램에 제공합니다 (True 또는 False). 이 절에서는 Swift 조건부, 부울 논리 및 삼항 구문의 사용에 대해 설명합니다.

비고

조건문에 대한 자세한 내용은 Swift 프로그래밍 언어를 참조하십시오.

가드 사용

2.0

Guard는 조건을 검사하고 false이면 분기로 들어갑니다. Guard check branch는 return , break 또는 continue (해당되는 경우)를 통해 둘러싼 블록을 떠나야합니다. 그렇게하지 않으면 컴파일러 오류가 발생합니다. 이것은 guard 가 쓰여졌을 때 흐름이 우연히 계속되도록하는 것이 불가능하다는 장점이 있습니다 ( if 로 가능한 if ).

가드를 사용하면 중첩 수준을 낮게 유지할 수 있으므로 대개 코드의 가독성이 향상됩니다.

func printNum(num: Int) {
    guard num == 10 else {
        print("num is not 10")
        return
    }
    print("num is 10")
}

Guard는 선택 항목에 값이 있는지 확인한 다음 외부 범위에서 값을 푸십시오.

func printOptionalNum(num: Int?) {
    guard let unwrappedNum = num else {
        print("num does not exist")
        return
    }
    print(unwrappedNum)
}

Guard는 선택적 언 래핑 및 조건 확인을 결합 할 수 있습니다. where keyword :

func printOptionalNum(num: Int?) {
guard let unwrappedNum = num, unwrappedNum == 10 else {
    print("num does not exist or is not 10")
    return
}
print(unwrappedNum)
}

기본 조건문 : if 문

ifBool 조건이 true 인지 여부를 확인합니다.

let num = 10

if num == 10 {
    // Code inside this block only executes if the condition was true.
    print("num is 10")
}

let condition = num == 10   // condition's type is Bool
if condition {
    print("num is 10")
}

if 문은 else if 조건을 테스트하고 대체를 제공 할 수있는 else ifelse 블록을 허용합니다.

let num = 10
if num < 10 {  // Execute the following code if the first condition is true.
    print("num is less than 10")
} else if num == 10 {  // Or, if not, check the next condition...
    print("num is 10")
} else {  // If all else fails...
    print("all other conditions were false, so num is greater than 10")
}

기본 연산자 (예 : &&|| 여러 조건에 사용할 수 있습니다.

논리 AND 연산자

let num = 10
let str = "Hi"
if num == 10 && str == "Hi" {
    print("num is 10, AND str is \"Hi\"")
}

num == 10 이 false이면 두 번째 값은 평가되지 않습니다. 이것을 단락 평가라고합니다.

논리합 연산자

if num == 10 || str == "Hi" {
    print("num is 10, or str is \"Hi\")
}

num == 10 이 참이면 두 번째 값은 평가되지 않습니다.

논리 NOT 연산자

if !str.isEmpty {
    print("str is not empty")
}

선택적 바인딩 및 "where"절

선택 사항 은 대부분의 표현식에서 사용되기 전에 언 래핑 되어야합니다. if let선택적 바인딩 이고, 옵션 값이 nil아닌 경우 성공합니다.

let num: Int? = 10 // or: let num: Int? = nil

if let unwrappedNum = num {
    // num has type Int?; unwrappedNum has type Int
    print("num was not nil: \(unwrappedNum + 1)")
} else {
    print("num was nil")
}

새로 바인딩 된 변수에 동일한 이름 을 다시 사용하여 원본을 섀도 잉 할 수 있습니다.

// num originally has type Int?
if let num = num {
    // num has type Int inside this block
}
1.2 3.0

여러 개의 선택적 바인딩을 쉼표 ( , )와 결합하십시오.

if let unwrappedNum = num, let unwrappedStr = str {
    // Do something with unwrappedNum & unwrappedStr
} else if let unwrappedNum = num {
    // Do something with unwrappedNum
} else {
    // num was nil
}

where 절을 사용하여 선택적 바인딩 후에 추가 제약 조건을 적용합니다.

if let unwrappedNum = num where unwrappedNum % 2 == 0 {
    print("num is non-nil, and it's an even number")
}

당신이 모험을 느끼는 경우, 임의의 수의 선택적 바인딩과 where 절을 삽입하십시오 :

if let num = num                           // num must be non-nil
    where num % 2 == 1,                    // num must be odd
    let str = str,                         // str must be non-nil
    let firstChar = str.characters.first   // str must also be non-empty
    where firstChar != "x"                 // the first character must not be "x"
{
    // all bindings & conditions succeeded!
}
3.0

스위프트 3에서 절을 대체되었습니다 ( where SE-0099 ) : 단순히 다른를 사용 , 옵션 바인딩 및 부울 조건을 분리 할 수 있습니다.

if let unwrappedNum = num, unwrappedNum % 2 == 0 {
    print("num is non-nil, and it's an even number")
}

if let num = num,                           // num must be non-nil
    num % 2 == 1,                           // num must be odd
    let str = str,                          // str must be non-nil
    let firstChar = str.characters.first,   // str must also be non-empty
    firstChar != "x"                        // the first character must not be "x"
{
    // all bindings & conditions succeeded!
}

삼항 연산자

조건은 삼항 연산자를 사용하여 단일 행에서 평가할 수도 있습니다.

두 변수의 최소값과 최대 값을 결정하려면 다음과 같이 if 문을 사용할 수 있습니다.

let a = 5
let b = 10
let min: Int

if a < b {
    min = a 
} else {
    min = b 
}

let max: Int

if a > b {
    max = a 
} else {
    max = b 
}

삼항 조건부 연산자는 조건을 취하여 조건이 참인지 거짓인지에 따라 두 값 중 하나를 반환합니다. 구문은 다음과 같습니다. 이는 다음 표현식을 갖는 것과 같습니다.

(<CONDITION>) ? <TRUE VALUE> : <FALSE VALUE>

위의 코드는 다음과 같이 삼항 조건부 연산자를 사용하여 다시 작성할 수 있습니다.

let a = 5
let b = 10
let min = a < b ? a : b
let max = a > b ? a : b

첫 번째 예에서 조건은 a <b입니다. 이것이 사실이라면 min에 할당 된 결과는 a로됩니다. false 인 경우, 결과는 b의 값이됩니다.

참고 : 두 숫자 중 큰 수 또는 작은 수를 찾는 것이 일반적인 작업이므로 Swift 표준 라이브러리는이 목적을 위해 최대 및 최소의 두 가지 기능을 제공합니다.

무 집착 연산자

nil-coalescing 연산자 <OPTIONAL> ?? <DEFAULT VALUE> 는 값이 포함되어 있으면 <OPTIONAL> <OPTIONAL> ?? <DEFAULT VALUE> 래핑 해제하거나 nil 인 경우 <DEFAULT VALUE> 반환합니다. <OPTIONAL> 은 항상 선택적 형식입니다. <DEFAULT VALUE><OPTIONAL> 안에 저장된 유형과 일치해야합니다.

nil-coalescing 연산자는 삼항 연산자를 사용하는 아래 코드에서 생략 할 수 있습니다.

a != nil ? a! : b

아래 코드를 통해이를 확인할 수 있습니다.

(a ?? b) == (a != nil ? a! : b) // ouputs true

예를 들어 시간

let defaultSpeed:String = "Slow"
var userEnteredSpeed:String? = nil

print(userEnteredSpeed ?? defaultSpeed) // ouputs "Slow"

userEnteredSpeed = "Fast"
print(userEnteredSpeed ?? defaultSpeed) // ouputs "Fast"


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow