Swift基础-运算符和条件语句

算术运算符

现在您知道了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

运算符重载

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是一种类型安全的语言,这意味着它不会让您混合类型。例如,您不能在字符串中添加整数,因为它没有任何意义。

复合赋值运算符

Swift有将一个运算符与赋值结合起来的速记运算符,因此您可以就地更改变量。这些看起来像你知道现有的运算符 +-*/,但他们有一个=在结束处,因为他们分配结果返回给任何你使用的变量。

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

var score = 95
score -= 5

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

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

比较运算符

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

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

let firstScore = 6
let secondScore = 4

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

firstScore == secondScore
firstScore != secondScore

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

firstScore < secondScore
firstScore >= secondScore

由于字符串具有自然的字母顺序,因此它们每个都还适用于字符串:

"Taylor" <= "Swift"

条件语句

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

为了尝试这一点,我想使用一个称为Swift的函数print():您使用一些文本运行它,它将被打印出来。

我们可以使用条件来检查二十一点的获胜条件:

let firstCard = 11
let secondCard = 10

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

如果条件为真,将打印括号- {}- 内的代码 。如果需要,可以使用条件为false时提供备用代码来运行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")
}

Swift有两个特殊的运算符,可让我们将条件组合在一起:它们分别是&&(发音为“和”)和||(发音为“或”)。

例如,我们可以检查两个人的年龄是否都超过某个特定值,例如:

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("One of them is over 18")
}

您可以在一个条件语句中多次使用&&||,但不要使用得太复杂,否则可能很难阅读!

三元运算符

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

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

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

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

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

如果您有多个条件使用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可以确保您涵盖所有可能的情况,从而不会错过任何可能的情况。如果天气不是下雨,下雪或晒日光,default则将运行机箱。

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!")
}

区间运算符

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!")
}

和以前一样,default必须确保存在所有可能的值。

总结

  • 1.Swift具有用于进行算术和比较的运算符;他们大多像您已经知道的那样工作。
  • 2.算术运算符有复合变体,可以在适当的位置修改其变量:+=,-=等等。
  • 3.您可以使用ifelseelse if根据条件的结果运行代码。
  • 4.Swift具有三元运算符,该运算符将校验与正确和错误的代码块结合在一起。尽管您可能会在其他代码中看到它,但我不建议您自己使用它。
  • 5.如果您有多个条件使用相同的值,则通常使用switch更容易。
  • 6.您可以使用区间..<...,具体使用哪种取决于应排除还是包括最后一个数字。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容