What is the `?` is or the `:` at the equation when coding in Swift

前端 未结 3 2109
南笙
南笙 2020-11-28 00:14

I have ran into a line of code in the infamous SevenSwitch class.

Here is the line...

backgroundView.layer.cornerRadius = self.isRounded ? frame.siz         


        
3条回答
  •  夕颜
    夕颜 (楼主)
    2020-11-28 00:41

    Operators can be unary, binary, or ternary:

    This is Ternary operators operate on three targets. Like C, Swift has only one ternary operator, the ternary conditional operator (a ? b : c).

    From Apple Documents Basic Operators

    Ternary Conditional Operator

    The ternary conditional operator is a special operator with three parts, which takes the form question ? answer1 : answer2. It is a shortcut for evaluating one of two expressions based on whether question is true or false. If question is true, it evaluates answer1 and returns its value; otherwise, it evaluates answer2 and returns its value.

    As per your question if isRound is true then corner radios is frame.size.height else it's 2.

    As like if condition :

    if(self.isRounded){
        backgroundView.layer.cornerRadius = frame.size.height * 0.4
    }
    else{
        backgroundView.layer.cornerRadius = 2.0
    }
    

提交回复
热议问题