100 Days of SwiftUI —— Day 3

作者: 韦弦Zhy | 来源:发表于2020-03-05 21:14 被阅读0次

    \color{red}{\Huge \mathtt{100 \ Days \ of \ SwiftUI \ — \ Day \ 3}}

    \color{orange}{\Large \mathbf{运算符和条件控制}}

    \color{orange}{\large \mathbf{Operators \ and \ conditions}}

    今天,我们将深入了解Swift的真实细节:运算符和条件控制。这有时会使人们在学习时绊倒,因为正如约瑟夫·坎贝尔(Joseph Campbell)曾经说过的那样,“计算机就像旧约中的神灵:很多规则,而且没有仁慈(computers are like Old Testament gods: lots of rules and no mercy.)”。

    不过不用担心。当然,如果您遇到错误的条件,那么您的代码可能一开始就无法正常工作,但是除了花费一点时间修复它并重试之外,它没有任何额外花费。

    实际上,人们在学习时常犯的一个常见错误是担心运行代码。请相信我:在您遵循此处的所有代码时,编写的任何代码都无法以某种方式破坏计算机。因此,更改代码并运行它。只需尝试改变您的值,直到您对正在发生的事情感到满意——一切都会有帮助。

    今天,您有10个一分钟的视频可供观看,并且您将遇到诸如运算符重载,switch语句等更多内容。观看完每个视频后,我们会进行一次简短的测试,以帮助您了解所教的内容。

    1. 算数运算符 Arithmetic Operatorstest

    现在您知道了Swift中的所有基本类型,我们可以开始使用运算符将​​它们放在一起。运算符是那些小的数学符号,例如+-,而Swift拥有大量的数学符号。

    这里有一些测试变量供我们使用:

    let firstScore = 12
    let secondScore = 4
    

    我们可以使用+-加减:

    let total = firstScore + secondScore
    let difference = firstScore - secondScore
    

    我们可以使用*/进行乘法和除法:

    let product = firstScore * secondScore
    let divided = firstScore / secondScore
    

    Swift有一个特殊的运算符,用于计算除法后的余数:。它计算一个数字可以容纳多少个数字,然后将剩余的值返回。

    例如,我们将secondScore设置为4,因此,如果我们说13 % secondScore,我们将得到1,因为4可以在13中乘以3,其余为1:

    let remainder = 13 % secondScore
    

    2. 运算符重载 Operator overloadingtest

    Swift支持运算符重载,这是一种很好的说法,即运算符的作用取决于您使用它的值。例如,+将整数相加:

    let meaningOfLife = 42
    let doubleMeaning = 42 + 42
    

    但是+也会拼接字符串,如下所示:

    let fakers = "Fakers gonna "
    let action = fakers + "fake"
    

    您甚至可以使用+拼接数组,如下所示:

    let firstHalf = ["John", "Paul"]
    let secondHalf = ["George", "Ringo"]
    let beatles = firstHalf + secondHalf
    

    请记住,Swift是一种类型安全的语言,这意味着它不会让您混合类型。例如,您不能在字符串中添加整数,因为它没有任何意义。

    3. 复合赋值运算符 Compound assignment operatorstest

    Swift的缩写形式运算符将一个运算符与一个赋值结合在一起,因此您可以就地更改变量。这些看起来像您所知道的现有的运算符 ——+, -*/,但是它们最后都有一个=,因为它们将结果分配回您正在使用的变量。

    例如,如果某人在考试中获得95分,但需要罚5分,则可以这样写:

    var score = 95
    score -= 5
    

    同样,您可以使用+=将一个字符串添加到另一个字符串:

    var quote = "The rain in Spain falls mainly on the "
    quote += "Spaniards"
    

    4. 比较运算符 Comparison operatorstest

    Swift有多个运算符可以进行比较,而这些运算或多或少地就像您在数学中所期望的那样。

    让我们从几个示例变量开始,以便我们可以使用:

    let firstScore = 6
    let secondScore = 4
    

    有两个用于检查相等性的运算符:==检查两个值是否相同,!=(发音为“不等于”)检查两个值不相同:

    firstScore == secondScore
    firstScore != secondScore
    

    有四个运算符用于比较一个值是大于,小于还是等于另一个值。这些就像在数学中一样:

    firstScore < secondScore
    firstScore >= secondScore
    

    由于字符串具有自然的字母顺序,因此它们每个都可以与字符串一起使用:

    "Taylor" <= "Swift"
    

    5. 条件控制 Conditionstest

    现在您知道了一些运算符,可以使用if语句编写条件控制。给Swift一个条件,如果条件成立,它将运行您选择的代码。

    要尝试此操作,我想使用一个名为print()的Swift函数:您在运行时输入一些文本,它将被打印出来。我们可以使用条件来检查二十一点(Blackjack)获胜者:

    let firstCard = 11
    let secondCard = 10
    
    if firstCard + secondCard == 21 {
        print("Blackjack!")
    }
    

    如果条件为真,则将打印括号内的代码{} ,如果您希望在条件为假时可以提供其他代码来运行,请使用else

    if firstCard + secondCard == 21 {
        print("Blackjack!")
    } else {
        print("Regular cards")
    }
    

    您还可以在以下情况下使用else if将条件链接在一起:

    if firstCard + secondCard == 2 {
        print("Aces – lucky!")
    } else if firstCard + secondCard == 21 {
        print("Blackjack!")
    } else {
        print("Regular cards")
    }
    

    6. 组合条件 Combining conditionstest

    Swift有两个特殊的运算符可让我们将条件组合在一起:它们是&&(发音为“ 与 and”)和||。(发音为“或 or”)。
    例如,我们可以检查两个人的年龄是否都超过某个特定值,例如:

    let age1 = 12
    let age2 = 21
    
    if age1 > 18 && age2 > 18 {
        print("Both are over 18")
    }
    

    只有两个年龄都超过18岁的年龄才会进行print()调用。实际上,Swift甚至不会费心检查age2的值,因为它可以看到age1已经无法通过测试。

    &&的相反项是||,如果其中一项通过测试,则评估为true。例如,如果两个年龄有一个超过18岁,我们可以打印一条消息:

    if age1 > 18 || age2 > 18 {
        print("At least one is over 18")
    }
    

    您可以使用&&||在一个条件下不止一次,但不要让事情变得太复杂,否则可能很难阅读!

    7. 三元运算符 The ternary operatortest

    Swift有一个很少使用的运算符称为三元运算符。它一次可以使用三个值,这就是它的名字来历:它检查第一个值中指定的条件,如果为true,则返回第二个值,如果为false,则返回第三个值。

    三元运算符是一个条件,加上一个true或false块,并被一个问号和一个冒号分开,所有这些使得它很难阅读。这是一个例子:

    let firstCard = 11
    let secondCard = 10
    print(firstCard == secondCard ? "Cards are the same" : "Cards are different")
    

    这将检查两张卡是否相同,如果条件为真,则打印“Cards are the same”,如果为假,则打印“Cards are different”。我们可以使用常规条件编写相同的代码:

    if firstCard == secondCard {
        print("Cards are the same")
    } else {
        print("Cards are different")
    }
    

    8. Switch语句 Switch statementstest

    如果您有多个条件使用ifelse if,则通常更清楚地使用另一种称为switch case的结构。使用这种方法,您只需编写一次条件,然后列出所有可能的结果以及每个结果将会发生的情况。

    尝试一下,下面是一个包含字符串sunny的天气常量:

    let weather = "sunny"
    

    我们可以使用一个switch块来打印四种不同的消息之一:

    switch weather {
    case "rain":
        print("Bring an umbrella")
    case "snow":
        print("Wrap up warm")
    case "sunny":
        print("Wear sunscreen")
    default:
        print("Enjoy your day!")
    }
    

    在该示例中,最后一种情况——default,是必需的,因为Swift可以确保您涵盖所有可能的情况,从而不会错过任何可能的情况。如果天气不是下雨,下雪或晒太阳,则将运行默认情况。

    Swift只会在每种情况下运行代码。如果要继续执行下一种情况,请使用fallthrough关键字,如下所示:

    switch weather {
    case "rain":
        print("Bring an umbrella")
    case "snow":
        print("Wrap up warm")
    case "sunny":
        print("Wear sunscreen")
        fallthrough
    default:
        print("Enjoy your day!")
    }
    

    如果是sunny 则会打印:

    Wear sunscreen
    Enjoy your day!
    

    9. 范围运算符 Range operatorstest

    Swift提供了两种生成范围的方法:.. <...运算符。半开范围运算符.. <创建的范围最大但不包括最终值(左闭右开),而封闭范围运算符...创建的范围最大为最终值,包括最终值(闭区间)。

    例如,范围1 .. <5包含数字1、2、3和4,而范围1 ... 5包含数字1、2、3、4和5。

    范围对于Switch块很有用,因为您可以在每种情况下使用它们。例如,如果某人参加考试,我们可以根据他们的分数打印不同的消息:

    let score = 85
    
    switch score {
    case 0..<50:
        print("You failed badly.")
    case 50..<85:
        print("You did OK.")
    default:
        print("You did great!")
    }
    

    和以前一样,默认情况下必须存在以确保覆盖所有可能的值。

    10. 运算符和条件控制语句: 总结 Operators and conditions summarytest

    您已经完成了本系列文章第三部分,所以让我们总结一下:

    1、Swift具有用于进行算术和比较的运算符;他们大多像您已经知道的那样工作。
    2、有算术运算符的复合变体可以在适当位置修改其变量:+=-=等。
    3、您可以使用ifelseelse if根据条件的结果运行代码。
    4、Swift具有三元运算符,该运算符将校验与正确和错误的代码块结合在一起。尽管您可能会在其他代码中看到它,但我不建议您自己使用它。
    5、如果您有多个条件使用相同的值,则通常更容易使用switch
    6、您可以使用.. <...来确定范围,具体取决于应排除还是包括最后一个数字。

    ╮( ̄▽ ̄)╭

    \color{orange}{\Huge \Bbb{Back \ \ to \ 100 \ \ Days \ \ of \ \ SwiftUI}}

    相关文章

      网友评论

        本文标题:100 Days of SwiftUI —— Day 3

        本文链接:https://www.haomeiwen.com/subject/otpllhtx.html