[翻译]Swift编程语言——基本操作符

本文介绍了Swift语言中的基本操作符,包括一元、二元及三元操作符,并详细解释了算术、比较、逻辑等各类操作符的功能和使用场景。

基本操作符

操作符就是一个简单的符号或者短语,你可以用他们来检查、改变、组合数据。举例说明,加操作符(+)把两个数字加到一起。更复杂的操作符例子有AND操作符(&&)还有自增操作符++。
Swift支持标准C的大多数操作符而且有若干改进可以避免代码错误。比如赋值操作符(=)不返回一个值,这样就避免了在想要使用比较操作符(==)时错误的使用了等号。算数运算符(+, -, *, /, %)会检测并且不接受溢出的数据,你可以选用Swfit的溢出操作符(overflow operators)预防这种情况出现。
像C一样,Swift允许你对浮点数取余,同时Swfit也提供了两个C没有的范围操作符(a..

术语

操作符有一元、二元以及三元的:
一元操作符只有一个操作对象(比如 -a)。一元前缀操作符放置在对象之前(!b ),一元后缀操作符放置在对象之后(i++);
二元操作符操作两个目标(such as 2 + 3),必然的操作符要出现在二者之间;
三元操作符有三个操作目标,和C一样,Swift只有一个三元操作符:三元条件操作符(a ? b : c)

操作符影响的那些个值叫做操作数。以表达式1+2为例,+是二元操作符,+的两个操作数分别是数值1和数值2.

赋值操作符(=)

元组的赋值,分解到对应元组成员、
赋值语句不返回值,避免使用==的时候误用了=

算数操作符(+-*/)

不同于C 和OC,Swift的算数运算符不允许溢出了,必要时你要使用溢出操作符(overflow operators)
+比较例外,可以用在字符串拼接的情形

取余操作符

其他语言称之为模运算,但是考虑到Swfit对负数的这类操作(负数是第一个操作数),还是叫做取余操作比较好。
a % b的意思是a = (b × some multiplier) + remainder 这个等式成立, some multiplier选取最大的的合适倍数后返回的 remainder ;​
9​ % ​4​ 对应为9 = (4 × 2) + 1,结果为1,同理-9%4对应为-9=(4*-2)-1结果为-1

此处输入图片的描述

b是正负数都可以,b无论正负,结果和b是正数的情况一样。

浮点数取余操作(浮点数做第二个操作数)

这点和C和OC不同,Swift支持浮点数做操作数的取余操作。
​8​ % ​2.5​ ​// equals 0.5

此处输入图片的描述

自增自减操作符(++ – 前后缀组合)

没啥说的

一元取负操作符(-)

切换操作数的符号(正负)。The unary minus operator (-) is prepended directly before the value it operates on, without any white space.

一元取负操作符使用后会被优先生效,不要和操作数之间留任何空白。

一元取正操作符(+)

没有任何作用,写着对称好玩吧。

复合赋值操作符(+= -=)

不返回值哦

比较操作符(== != > < >= <=)

Swift有身份操作符=== 、!==,可以用它来判断是否两个引用指向同一个对象。
==、!=可以用在字符串比较上

三元操作符(question ? answer1 : answer2)

尽管用着方便,但尽量避免使用过度造成的阅读困难。

Nil联合操作符(a ?? b)

这个操作会判断一个可选类型是否有值,如果有值则返回解包的值;如果没有值,则返回一个默认值。a必须是个可选类型,b的类型必须和a的类型匹配。
a ?? b 等价于​a​ != ​nil​ ? ​a​! : ​b

封装了nil检查和解包过程,简练而且易读。
如果a不是nil,b不会求值计算,这就是短路原则。

范围操作符

闭值域操作符

表示从a到b的范围(包括a和b),要确保a不能大于b。
最常用的场景是配合for in 的使用

for​ ​index​ ​in​ ​1​…​5​ {
​ ​println​(​”​(​index​)​ times 5 is ​(​index​ * ​5​)​”​)
​}
​// 1 times 5 is 5
​// 2 times 5 is 10
​// 3 times 5 is 15
​// 4 times 5 is 20
​// 5 times 5 is 25

半开值域操作符

表示从a到b的范围(包括a,不包括b),要确保a不能大于b。
最常用的场景是对以0为第一位置的列表进行计数操作时,因为这种情况不能访问到长度值作所在的位置。

​let​ ​names​ = [​”Anna”​, ​”Alex”​, ​”Brian”​, ​”Jack”​]
​let​ ​count​ = ​names​.​count
​for​ ​i​ ​in​ ​0​..<​count​ {
​ ​println​(​”Person ​(​i​ + ​1​)​ is called ​(​names​[​i​])​”​)
​}
​// Person 1 is called Anna
​// Person 2 is called Alex
​// Person 3 is called Brian
​// Person 4 is called Jack

逻辑操作符(!a、a && b)

逻辑操作法修改或者组合不二类型的值。Swift提供了三种和C一样的逻辑操作符。

逻辑非符(!a)

前缀操作符,和操作数之间不能有空格。读作“not a”。
给操作数起好的名字是个好习惯,简明易懂,避免做双重否定或者让人迷惑的逻辑语句。

逻辑与符(a && b)

逻辑与创建了一个逻辑表达式,而且在两条语句都为真才会得到真。短路原则在第一个语句为false时起作用,第二个语句就不被求值计算了。

逻辑或符(a || b)

逻辑或创建了一个逻辑表达式,只要有其中一条语句为真就会得到真。如果左边的语句为真了,右边的语句就不会被求值计算了。这也是短路的一种情况。

组合逻辑操作符

多个逻辑操作符可以连接使用。
避免出错加的括号
【源码免费下载链接】:https://renmaiwang.cn/s/3r450 支持向量机(Support Vector Machines,SVM)是机器学习领域一种强大的监督学习算法,尤其在分类和回归问题上表现出色。本章聚焦于通过Python 3.7实现支持向量机,提供详尽的代码注解,帮助读者深入理解其工作原理。一、支持向量机基本概念支持向量机的核心思想是找到一个最优超平面,该超平面能够最大程度地将不同类别的数据分开。超平面是特征空间中的一个决策边界,它由距离最近的训练样本(即支持向量)决定。SVM的目标是最大化这些最接近样本的距离,也就是所谓的间隔。二、SVM的两种类型1. 线性SVM:当数据线性可分时,SVM可以找到一个线性超平面进行分类。2. 非线性SVM:通过核函数(如高斯核、多项式核等)将低维非线性数据映射到高维空间,从而在高维中找到一个线性超平面进行分类。三、SVM的主要组成部分1. 决策函数:SVM使用超平面作为决策边界,形式为`w·x+b=0`,其中`w`是超平面的法向量,`b`是偏置项。2. 支持向量:位于最近间隔边缘的数据点,对超平面的位置至关重要。3. 软间隔:允许一部分样本落在决策边界内,通过惩罚项C控制误分类的程度。4. 核函数:用于实现非线性分类,如高斯核(RBF,Radial Basis Function):`K(x, y) = exp(-γ||x-y||^2)`,其中γ是调整核函数宽度的参数。四、Python实现SVM在Python中,我们可以使用Scikit-Learn库来实现SVM。Scikit-Learn提供了多种SVM模型,如`svm.SVC`(用于分类)、`svm.LinearSVC`(仅线性分类)和`svm.NuSVC`(nu版本的SVM,支持类别不平衡问题)。五、SVM的训练与预测流程1. 数据预处理:将数据归一化或标准化,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值