SWIFTUI/Grammar

SwiftUI : 삼항 연산자 / IF

서근 2021. 1. 25. 18:23
반응형

삼항 연사자에 대해 알아보도록 합시다.

삼항 연산자

true ? Text("삼항 연산자는 잘 실행 됩니다."): Text("0") 

Nil-coalescing : 옵셔널 값을 풀어주는 개념으로 삼항 연사자를 활용해서 쓸 수 있습니다.

TIP
 
 

연산자 란?  값을 확인, 변경, 결합하는 데 사용하는 특별한 기호나 문구

삼항 연사자에서?true, :false 라고 생각하면 좋은데,

 

예를 들어 useRedTexttrue이면 yellow, fasle이면 green으로 배경색을 바뀌게 하고 싶으면 아래와 같이 코드를 작성할 수 있습니다.

.background(useRedText ? Color.yellow : Color.green)
struct ContentView: View {
    //useRedText를 false 색상으로 정해줌
    @State private var useRedText = false
    
    var body: some View {
        ZStack {
            
            Button("삼항연산자") {
                //애니메이션효과와 함께
                withAnimation {
                    //버튼이 토글되면 실행
                    self.useRedText.toggle()
                }
            }
            .font(.largeTitle)
            .foregroundColor(.black)
            //배경색을 채워줌
            .frame(maxWidth: .infinity, maxHeight: .infinity)
            
            //useRedText가 true이면 yellow, false이면 green
            .background(useRedText ? Color.yellow : Color.green)
            //safeArea 부분까지 채워줌
            .edgesIgnoringSafeArea(.all)
        }
    }
}

IF문

아래 코드처럼 일반적으로 If문을 작성하면 컴파일이 실행되지 않는다는 것을 확인할 수 있습니다.

struct ContentView: View {
    var body: some View {
        if true {
            Text("if 구문은 오류가 발생합니다.")
        } else {
            Text("X")
        }
    }
}

그 이유는 Swift에서 삼항 연사자표현식에 해당하고, if문은 구문으로 분류되기 때문입니다.

 

따라서 삼항 연사자는 단일 표현식으로 취급되어 return 키워드가 필요 없지만, if 문에서는 다음과 같이 텍스트 앞에서 각각 return를 붙여 주어야만 오류 없이 실행됩니다.

struct ContentView: View {
    var body: some View {
        if true {
            return Text("리턴 키워드를 명시하면 정상적으로 수행됩니다.")
        } else {
            return Text("O")
        }
    }
}

 

읽어주셔서 감사합니다🤟