IOS Swift 从入门到精通:算术运算,运算符重载,符合赋值运算,比较运算,条件,结合条件,三元运算,Swift语句,范围运算

目录

算术运算符

运算符重载

复合赋值运算符

比较运算符

条件

结合条件

三元运算符

Switch 语句

范围运算符

总结


算术运算符

现在您已经了解了 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我们会返回一,因为 4 可以乘以 13 三次,余数为一:

 

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

}

如果条件为真,则将运行括号 –{和–内的代码 。如果您愿意,可以提供在条件为时运行的替代代码,使用:}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 有两个特殊运算符可以让我们将条件组合在一起:它们是&&(发音为“and”)和||(发音为“or”)。

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

 

let age1 = 12

let age2 = 21

if age1 > 18 && age2 > 18 {

   print("Both are over 18")

}

只有当两个年龄都超过 18 岁时才会发生该print()调用,但事实并非如此。事实上,Swift 甚至不会费心检查 的值,age2因为它可以看到age1已经失败了测试。

的替代方法&&||,如果任一项目通过测试,则评估结果为真。例如,如果任一年龄超过 18 岁,我们可以打印一条消息:

 

if age1 > 18 || age2 > 18 {

  print("At least one is over 18")

}

您可以在单一条件中多次使用&&and ,但不要使事情变得太复杂,否则可能很难阅读!||

三元运算符

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

三元运算符是一个条件加上 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")

}

Switch 语句

如果您有多个使用if和 的条件else 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 只会运行每个 case 中的代码。如果希望继续执行下一个 case,请使用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 有一个三元运算符,它将检查与 true 和 false 代码块结合起来。虽然你可能在其他代码中看到它,但我不建议你自己使用它。

  5. 如果有多个条件使用相同的值,则使用switch后者通常会更清楚。

  6. 您可以使用..<和来制定范围,...具体取决于是否应排除或包含最后一个数字。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/31922.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

外贸找客户软件

外贸找客户软件在帮助外贸企业或个人寻找潜在客户、提高销售效率方面起着重要作用。以下是一些常用的外贸找客户软件&#xff0c;它们各有特点和优势&#xff0c;可以根据具体需求选择使用。 阿里巴巴国际版&#xff1a; 阿里巴巴国际版App为外贸人提供了一个巨大的B2B平台&am…

qt 开发对信号槽进行二次封装,实现信号槽管理接口。

最近做的一个项目,由于工程需要模块之间能够互相通信,但又不想模块之间耦合度太高 使用信号槽的话,需要两个类的对象或者指针在其中一个类都要体现,这样达不到效果, 想要一个管理类对这些互相通信的类之间进行管理,只需要在各自的类注册发送者和接收者即可,双方通过一…

Charles抓取安卓应用https包演示

一、准备软件 夜神安卓模拟器 (yeshen.com) Charles (charlesproxy.com) 二、配置抓包 2.1 Charles安装PC根证书 记住这里的ip端口 三、安卓模拟器配置 3.1 配置安卓客户端网络代理 填写上文的ip端口&#xff0c;保存 3.2 安装根证书 3.2.1 导出根证书 linux主机执行 op…

推荐4款实用工具,非常好用,建议收藏

PDFREAL PDFReal 是一个功能强大的在线PDF编辑工具&#xff0c;提供多种实用的PDF处理功能。用户可以在一个网站上完成包括PDF合并、PDF拆分、PDF压缩、PDF保护、PDF解锁等多种操作。此外&#xff0c;PDFReal 还支持将文本转换为PDF、将图片转换为PDF、添加水印、提取页面内容等…

基于Django、Bootstrap的电影推荐系统,算法基于用户的协同过滤算法,有爬虫有可视化后台

背景 基于Django和Bootstrap的电影推荐系统结合了用户协同过滤算法&#xff0c;通过爬虫技术获取电影数据&#xff0c;并在可视化后台展示推荐结果。该系统旨在提供个性化的电影推荐服务&#xff0c;帮助用户发现符合其喜好的电影。 用户协同过滤算法是一种常用的推荐算法&am…

qt开发-09_分裂器

QSplitter 是 Qt 框架中的一个非常实用的控件&#xff0c;用于创建可调整大小的窗格。它允许用户通过拖动子窗口间的边界&#xff08;也称为分割条&#xff09;来动态调整子窗口的尺寸。这在开发需要多个视图同时显示&#xff0c;且用户需要根据需要调整每个视图大小的应用程序…

【408考点之数据结构】表达式求值和括号匹配

表达式求值和括号匹配 表达式求值 表达式求值是计算机科学中的一个基本问题&#xff0c;涉及将数学表达式转换为计算机可以理解和处理的形式。通常&#xff0c;我们使用栈来辅助求值过程&#xff0c;特别是在处理中缀表达式转后缀表达式和后缀表达式求值时。 中缀表达式转后…

机器学习python实践——由特征选择引发的关于卡方检验的一些个人思考

最近在用python进行机器学习实践&#xff0c;在做到特征选择这一部分时&#xff0c;对于SelectPercentile和SelectKBest方法有些不理解&#xff0c;所以去了查看了帮助文档&#xff0c;但是在帮助文档的例子中出现了"chi2"&#xff0c;没接触过&#xff0c;看过去就更…

基于SpringBoot+Vue在线考试报名系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

【APP移动端性能测试】第四节.APP移动端常见的性能测试点(下)

文章目录 前言五、流量性能测试 5.1 流量基本情况说明 5.2 流量的测试步骤 5.3 流量的优化方法六、电量性能测试 6.1 电量基本情况说明 6.2 电量的测试步骤 6.2 电量的结果分析七、APP启动测试 7.1 APP启动的两种方式 7.2 APP启动的测…

简单了解JDBC相关操作

JDBC 1、概念 JDBC就是使用java语言操作关系型数据库的一套API&#xff0c;全称java数据库连接。 2、具体步骤 创建工程&#xff0c;导入驱动jar包注册驱动获取连接定义SQL语句获取执行SQL语句的对象执行SQL处理返回结果释放资源 Testpublic void jdbcTest() throws Class…

Python中列表的常用操作

列表的基本使用 arr []# append arr.append(1) print(arr)arr.append("a") print(arr)列表的增删改查 arr []arr.append(1) arr.append(2) arr.append(3)print(arr)# pop arr.pop() print(arr)# update arr[0] 333 print(arr)# get print(arr[0])列表的复制 ar…

Qt Quick介绍

一.Qt Quick介绍 Qt Quick 是 QML 类型和功能的标准库&#xff0c;包括视觉类型、交互式类型、动画、模型和视图、粒子效果和着色效果 Qt Quick 使用 QML 作为声明语言&#xff0c;来设计以用户界面为中心的应用程序 QML 包含大量使用手机移动设备的功能模块&#xff0c;比如基…

python-邮票组合问题

[题目描述] 某人有四张3分的邮票和三张5分的邮票&#xff0c;用这些邮票中的一张或若干张可以得到多少种不同的邮资&#xff1f;输入格式&#xff1a; 此题无输入。输出格式&#xff1a; 输出可以得到不同邮资的数量。 样例输入 无样例输出 19数据范围&#xff1a; 对于100%的…

使用invokeMethod异步执行QT函数操作

在QT窗口初始化加载的时候如果执行比较耗时的操作,很容易阻塞主界面的显示,导致用户体验差。这时候一般我们可以通过定时器延时加载对应的操作。其实使用QMetaObject::invokeMethod方法也可以实现异步加载,操作更简单效果更好。两种方式如下: //异步执行loadData函数 //Qt:…

【抽代复习笔记】21-群(十五):循环群引理及定义

例4&#xff1a;证明&#xff0c;如果σ(i1 i2 … ik)是Sn中的一个k-循环&#xff0c;而r∈Sn&#xff0c;则rσr^(-1)也是一个k-循环&#xff0c;且rσr^(-1)(r(i1),r(i2),…,r(ik))。 证&#xff1a;①设σ(i1 i2 … ik)(i1 ik)(i1 ik-1)…(i1 i2)&#xff0c; 则rσr^(-1)…

触想工业一体机在智慧医疗智能采血管理系统中的应用

一、行业发展前景 作为医院重点科室之一&#xff0c;传统的检验科采血环节存在诸多痛点&#xff0c;特别在备管阶段&#xff0c;大量患者信息的核对、试管条码打印、选管、贴标等繁琐步骤均依赖人工操作&#xff0c;工作强度大、效率低&#xff0c;易出错。 随着智慧医院建设的…

笔记-python里面的xlrd模块详解

那我就一下面积个问题对xlrd模块进行学习一下&#xff1a; 1.什么是xlrd模块&#xff1f; 2.为什么使用xlrd模块&#xff1f; 3.怎样使用xlrd模块&#xff1f; 1.什么是xlrd模块&#xff1f; ♦python操作excel主要用到xlrd和xlwt这两个库&#xff0c;即xlrd是读excel&…

秋招突击——6/21——新作{两两交换链表中的节点,K个一组反转链表}

文章目录 引言新做删除有序数组中的重复项个人实现 K 个一组翻转链表个人实现参考代码 总结 引言 上午完全去听讲座了&#xff0c;听了三场&#xff0c;拿了三个讲座单&#xff0c;从九点一直到十二点。笔记本电脑插电才能用&#xff0c;就没带&#xff0c;所以没有进行复习。…

qt开发-08_layout 布局

Qt 提供了非常丰富的布局类&#xff0c;基本布局管理类包括&#xff1a;QBoxLayout、QGridLayout、QFormL ayout 和 QStackedLayout。这些类都从 QLayout 继承而来&#xff0c;它们都来源于 QObject&#xff08;而不是 QWi dget&#xff09;。创建更加复杂的布局&#xff0c;可…