澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站Swift的基本运算符,部分基础

2019-06-23 作者:www.8455.com   |   浏览(194)

运算符是用来检查,退换或组合值的特殊符号或短语。斯维夫特提供的大多正规的运算符,如 、-、*、/、%、=、==等,以及逻辑运算的&&、||等等,基本上没有要求再一次介绍,我们在此地只供给理解部分不太一致的运算符就足以了。如Swift引进的国民党的新生活运动算符,范围操作符号,包含..<和...八个,该小说介绍斯维夫特常规的演算符中,以及和别的语言有所分裂的一对。

操作符是用于检验、改换或者组合值的特殊符号或短语。举例,加法操作符 ( ) 将四个数字加到一同 (如 let i = 1 2)。更复杂的事例包蕴逻辑与操作符 && (如 if enteredDoorCode && passedRetinaScan) 和自增操作符 i,正是把 i 的值加1的火速方式。

有的基础运算符

Swift的着力运算符,斯威夫特运算符

  前些天读书了Swift语言的最基本的文化,以下是自个儿的片段认知与总括,希望能协助更四个人的区精晓,如有不妥的地点望咱们提出,以便及时纠正。

  

  着力运算符

  运算符是一种独特的暗记或短语,你能够用它来检查,改换,或组合值。

  运算符都以一元,二元或然伊利:

  • 一元运算符操作单个对象主要有:前缀操作符 (如 -a,!a)和后缀操作符在对象后出现 (如 i ,i--)。
  • 二元运算符操作七个指标且在两目的时期,首要有:-, ,*,/,%,<,>,=。(如 a-b, a b, a*b, a/b, a%b, a<b, a>b, a=b)
  • 元春运算符对五个对象实行操作,与C语言一样,Swift也只帮助二个安慕希运算符:伊利规范操作符 (a ? b : c).

  赋值运算符

  赋值运算符 (a=b) 用 b 的值去伊始化或更新a的值

 let b =2
 var a = 3
 a= b 
//此时a的值等于b的值都是2

 

  假诺右侧赋值的数额为四个数据的元组,它的因素得以是壹回性赋给的四个常量或变量 

let (a, b) = (1, 2)
// a等于1, b等于2

  与C及Objective-C不一样,斯维夫特中赋值运算符并不将自家作为三个值实行重返。所以以下的代码是违规的:

if x = y {
// 错误, 因为x = y并不会返回一个值
}

 

Swift 帮助大多数正规的C 操作符并且改良了几项效率以排除附近的编码错误。赋值操作符 (=) 不重回值,是为了防止想用等于操作符(==)时非常的大心用成了赋值操作符。算数运算符 ( , -, *, /, % 等等) 检查评定并取缔值溢出,以防运算时搜查缉获的结果出乎或小于类型允许的限制。

运算符有一元、二元和三朝运算符:

 数学生运动算符

  斯威夫特别支部持具备数字类型的三个标明运算符:

  • 加法( )
  • 减法(-)
  • 乘法(*)
  • 除法(/)

  例如:

1   2 // equals 3
5 - 3 // equals 2
2 * 3 // equals 6
10.0 / 2.5 // equals 4.0

 

  不相同于C和Objective-C,默许情形下斯维夫特的算术运算符不允许值溢出。加法运算符对字符串连接也同样适用,举例:

"hello, "   "world" // equals "hello, world"

 

  多个字符,恐怕贰个字符八个字符串,能组合成一个新的字符串:

let dog: Character = "dog"
let cow: Character = "cow"
let dogCow = dog   cow
// dogCow is equal to "dogcow"

  取余运算符

  取余运算符%是指在除数除以被除数时多余的数,如(3%2的余数正是1)

let a = 5
let b = 3
let c = a%b
//这时c的值是2

  同五个格局中借使a的值是-5那么取余运算后c的值正是-2,即便b的值是-3则c的值会是2,也正是说取余运算的标识不受被除数b的震慑,只受除数a的震慑

  浮点余数总结

  分化于C与OC的是Swift的取余运算一样能够接纳于浮点数:

let a = 8
let b = 2.5
let c = a%b
//那么现在的c的值是0.5

  自增自减运算符

  和C一样斯维夫特提供了自增( ),自减(--)五个运算符,其增减量为1,能够对别的的整点或浮点类型的变量使用。如

var a = 0
  a    //这时a的值是1
--a      //这时a的值是0

  这里需求小心的是当运算须求重返值的时候,自增自减运算符所放的职位的比不上对运算的结果也是不相同等的:

var a = 0
let b =   a      //a和b的值都为1
let c = a       //这时a的值是2  c的值是1
let d = --a       //这时d的值是1  a的值也是1
let e = a--       //这时e的值是1  a的值是0

 

  复合赋值操作符

  斯维夫特提供了和C语言同样的复合复制操作符,就是说把赋值和其余一种运算符结合起来。如( =),(-=):

var a = 1
a  = 2     //这时a的值为3 
a -= 3      //这时a的值为0

 

  加法赋值操作符的原型是  a = a 2,之所以写成( =)是因为那样写能够有效地把加法和赋值组合到四个运算,同一时候施行那三个任务。

  需求专注的是:复合复制操作符不再次回到值。比方那样写正是颠三倒四的    let a = =1。

  

  比较运算符

  Swift帮助全体C的可比运算符。

  • 大于(a>b)
  • 小于 (a<b)
  • 出乎等于 (a >= b)
  • 稍低于等于 (a <= b)
  • 等于  (a = b)
  • 不等于 (a != b)

    let a = 5
    let b = 6
    let c = 5
    a>b        //返回false    
    c<b        //返回true
    a>=c     //返回true   
    a<=c     //返回true
    a == c   //返回true
    a != b    //返回true
    

    这种相比较运算符日常都用在条件语句中,举例if语句 

    let a = "chk"
    if a == "chk"{
        println("hello, chk")    
    } 
    else{
        println("not chk") 
    }
    //输出的结果是 hello, chk
    

     

    关于if语句大家今后再详尽研商

     

  范围运算符

  Swift提供了二种样式的限量运算符

  1、封闭范围运算符

    封闭范围运算符(a...b)定义了二个限量,从a到b,并蕴含了a和b的值。一般用于for -in 循环语句中

for i in 0...5{
    println("第 (i) 次")
}

//第 0 次
//第 1 次
//第 2 次
//第 3 次
//第 4 次

 

 

 

   关于for -in语句大家之后再深远研商。  

  2、半封闭的区域运算符

          半封闭的区域运算符(a..b)定义了从a到b的范围,但不包含b。它被感觉是半封闭的,因为它涵盖第二个值,而不含有最后值。

    半封闭的范围使用明显,当你利用从零开头的列表,如数组,它是立见成效的数到(但不蕴涵)列表的长度:

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

  请小心,该数组包括多个连串,但0 . .数只数到3(数组中的最后八个类别的目录),因为它是一个半查封的限定。有关数组的消息,大家随后深远钻探。

  新年底中一年级运算符**

  斯威夫特跟C语言同样也援救长富运算,长富运算也属于条运算,首要格局是 a?b:c 其表明的意味是剖断a的值,若a的值重临true则表明式重返b的值,若a的值再次来到false则重回c的值。下边咱们用代码比较下安慕希运算符的优势:

let a = true
let b = a?2:3
//这时b的值是2

 

  上面包车型地铁表达式也得以这么写

let a = true
if a {
    reture 2
}
else{
    reture 3
}
//结果是2

  很刚强使用三元运算符更简明,更便利。可是需求专注的是为了保障代码的可读性,最棒不用选拔多少个实例的三元标准运算符组合成一个复合语句。

 

  逻辑与运算符

  Swift扶助这三个专业逻辑运算符基于C语言,经常用在基准语句中:

  • not (!a)
  • and (a&&b)
  • or  (a || b)

  逻辑非运算符(!a)表明的意趣为不是何等创建则赶回true,不创立则赶回false

let a = true
if !a {
    println("条件成立")
}
else{
    println("条件不成立")
}
//输出结果是  条件不成立
//因为a本身是正确地,而逻辑非运算符说a不是正确地,所以不成立返回false

 

 

 

 

  逻辑与运算符(A&&B)表达的乐趣为A,B多个值都无法不是true才再次回到true,否则A,B中有三个是false就回去false

let A = true
let B = false
if A && B {
    println("条件成立返回true")
}
else{
    println("条件不成立返回false")
}
//输出结果是  条件不成立返回false

 

  逻辑或运算符(A || B)表示A和B在那之中有叁个是true则赶回true,假使A,B都以false则结果回到false

let A = true
let B = false
if A || B {
    println("条件成立返回true")
}
else{
    println("条件不成立返回false")
}
//打印结果是    条件成立返回true

  在此间值得说的是不管是逻辑与运算符如故逻辑或运算符都用到了绿灯条件推断法,比方说逻辑与运算符(&&)必需是七个值都为true时才创设,那么当左侧的值是false的时候,条件不成立,就不供给再剖断运算符左侧的值了。逻辑或运算符(||)也是一律的道理,逻辑或运算符(||)是纵然有多少个值是true就确立,那么当判别左侧的值是true时,则条件是创建的,就绝不再推断运算符左边的值了。

  复合逻辑表明式

  适合逻辑表达式是将多个逻辑运算符复合后创制更加长的复合表达式:

let a = true
let b = false
let c = true
if !a || c && b {
    println("条件成立")
}
else {
    println("条件不成立")
}
//输出结果是条件不成立

 

  像这种复合逻辑表明式的判读一般都以从左到右依照逻辑运算符的先行级依次实行剖断,(!,&&,||)那四个运算符的优先级是均等的,只须要记住逻辑与运算符(&&)两个都不能够不是true才创设,逻辑或运算符(||)两个有多少个是true则树立,如此就能够精确剖析整个复合表明式,一定要由此现象看本质。

 

  明显地括号

  其一就相比较好精晓了,在复合逻辑表明式中大家得以增多()使逻辑意图越发鲜明,比如在上段代码中大家参加()

let a = true
let b = false
let c = true
if !a || ( c && b ) {
    println("条件成立")
}
else {
    println("条件不成立")
}
//输出结果是条件不成立

 

  在适合逻辑表明式中大家能够把几个值放在贰个单身的逻辑运算中去看清出结果,然后根据()内推断的结果再与日前或前面包车型地铁值实行剖断,最终得出最后结出

 

  

  

后天学习了斯威夫特语言的最基本的学识,以下是本人的有的认知与计算,希望能协理更几人的区明白,如有不妥...

赋值运算符

let b = 10
var a = 5
a = b
// a is now equal to 10

 赋值语句,管理和其他语言同样。

 

let (x, y) = (1, 2)
// x is equal to 1, and y is equal to 2

 这种代码是近乎ECMAScript 6的剧本写法,通过把左边手元祖对象解构赋值给左侧对应的参数。

 

不像C,斯维夫特 能够对浮点数举行取余操作 (%) 。 斯威夫特 还提供五个范围操作符 (a..<b 和 a…b) ,那在C里是从未有过的,用来代表二个限制的值。

  • 一元运算符在单个操作数(举个例子-a)上操作。一元前缀运算符出现在其操作数(比方!b)此前,一元后缀运算符出现在其操作数之后(如c!)。

  • 二元运算符操作多个操作数(举例2 3),并且是中缀,因为它们出现在它们的多个操作数之间。

  • 元春运算符操作多个操作数。像C同样,Swift只有贰个长富运算符,三元标准运算符(a ? b : c)。

数学生运动算符

1   2       // equals 3
5 - 3       // equals 2
2 * 3       // equals 6
10.0 / 2.5  // equals 4.0

 那几个都是和别的语言未有啥样区别,循例列出参谋下

对此字符,也足以采用 符号实行接二连三新的字符串

"hello, "   "world"  // equals "hello, world"

 

一元操作符中的-、 运算,和算术里面包车型大巴负负得正,正负得负的意趣同样了。

let three = 3
let minusThree = -three       // minusThree equals -3
let plusThree = -minusThree   // plusThree equals 3, or "minus minus three"

 

let minusSix = -6
let alsoMinusSix =  minusSix  // alsoMinusSix equals -6

 

构成运算符提供 = 、-=的运算符操作

var a = 1
a  = 2
// a is now equal to 3

 

对待运算符和其余语言差不离

  • 等于 (a == b)

  • 不等于 (a != b)

  • 大于 (a > b)

  • 小于 (a < b)

  • 抢先等于 (a >= b)

  • 低于等于 (a <= b)

除此以外值得注意的是,Swift提供了对待引用的三个操作符号,=== 和 !==,用来检查两个引用是否完全相等;或者不相等的。而==只是用来对比两个对象的值是否一致。

1 == 1   // true because 1 is equal to 1
2 != 1   // true because 2 is not equal to 1
2 > 1    // true because 2 is greater than 1
1 < 2    // true because 1 is less than 2
1 >= 1   // true because 1 is greater than or equal to 1
2 <= 1   // false because 2 is not less than or equal to 1

 相比运算符也平日用来If条件语句里面

let name = "world"
if name == "world" {
    print("hello, world")
} else {
    print("I'm sorry (name), but I don't recognize you")
}
// Prints "hello, world", because name is indeed equal to "world".

 

今日大家来大致介绍下 Swift里的常用操作符。

1. 分配运算符

  • 该赋值运算符(a = b)开端化或更新的价值a与价值b:
let b = 10
var a = 5
a = b
// a is now equal to 10
  • 倘若赋值的右臂是负有多少个值的元组,则其成分得以三次演讲为三个常量或变量:
let (x, y) = (1, 2)
// x is equal to 1, and y is equal to 2
  • 与C和Objective-C中的赋值运算符分裂,Swift中的赋值运算符本人不重回值。以下语句无效:
if x = y {
    // This is not valid, because x = y does not return a value.
}

此成效幸免在实际上利用(==)时不敢相信 不能够相信使用(=)。通过使if x = y失效,制止那个品种的荒唐。

三朝运算符

长富运算符 ? :和C#中间表现是均等的

question ? answer1 : answer2

 

let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight   (hasHeader ? 50 : 20)

 

术语

操作符分一元、二元和三元:

一元操作符操作于贰个十足指标(如 -a)。一元前缀操作符在它们的靶子以前紧跟出现(如 !b),一元后缀操作符在它们的对象之后紧跟出现(如 i )。 
二元操作符操作于四个目的(如 2 3),是中缀操作符,因为它出现在四个目的的中游。 
新岁初中一年级操作符操作于多少个指标。像 C 同样,Swift 唯有一个安慕希操作符,正是伊利条件操作符 (a ? b : c)。 
操作符影响的值称为操作数。在表明式 1 2中,符号 是贰个二元操作符,它的操作数是值 1 和 2。

 

澳门新萄京官方网站Swift的基本运算符,部分基础运算符。一、一元运算符

  (一)、负号运算符

澳门新萄京官方网站 1

 

 

  (二)、正号运算符

澳门新萄京官方网站 2

注 : 乘 (*)、 除 (/)与OC用法一样

  (三)、自增、自减运算符

 

澳门新萄京官方网站 3

自减同上,本质上 跟OC没怎么差异

 

二、二元运算符

 (一)、赋值运算符

        1、赋值操作符 (a = b) 用 b 的值伊始化或更新 a 的值:

澳门新萄京官方网站 4

 

       2、要是赋值操作符的左边是二个有三个值的元组,它的因素得以即刻被拆除与搬迁为七个常量或变量:

澳门新萄京官方网站 5 

 

    3、不像 C 和 Objective-C 里的赋值操作符,Swift里的赋值操作符本身并不重返值。上面的话语是不行的:

 澳门新萄京官方网站 6

 这一个特性幸免了赋值操作符 (=) 被误用作等于操作符 (==) 。Swift 帮您幸免 if x = y 那个错误在代码里冒出。

 

  (二)、取余运算符

澳门新萄京官方网站 7

 

 

  (三)、组合赋值运算符

 澳门新萄京官方网站 8

 

 (四)、比较运算符

斯威夫特 帮忙具备正式的 C 比较操作符,具体功用和利用情势与C语言一样,在此不再赘述 

等于 (a == b)

不等于 (a != b)

大于 (a > b)

小于 (a < b)

过量或等于 (a >= b)

稍低于或等于 (a <= b)

 

 (五)、逻辑运算符

Swift援救基于C语言的二种标准的逻辑操作符:

逻辑否 (!a)

逻辑与 (a && b)

逻辑或 (a || b)

 澳门新萄京官方网站 9

 

下边多少个是swift新扩充的八个运算符:

 (六)、区间运算符

   1、全闭区间

澳门新萄京官方网站 10

关掉范围操作符 (a…b) 定义了多个从 a 到 b 的界定,同不常候包蕴a 和 b 的值。a 的值必须不可能超过 b 。

 

   2、半开半闭区间

澳门新萄京官方网站 11

半开范围极其适用于从0开端的列表,如数组,平素数到(但不包涵)列表的长度

 

 (七)、空合运算符

  空合运算符(a ?? b)将对可选类型a拓展空推断,假如a涵盖一个值就张开解封,不然就回去七个暗中同意值b.那一个运算符有七个标准化:

  表达式a必须是Optional类型

  默认值b的项目必须求和a存储值的花色保持一致

澳门新萄京官方网站 12

 澳门新萄京官方网站 13

 

三、安慕希运算符 

雅士利条件操作符分多个部分,形式是那般的 question ? answer1 : answer2。

例如:a > b ? a : b

行使效果同C语言的三木运算符,在此不再赘述 

 

 

出于苹果集团发表斯维夫特才刚满一年有所的效应都在相连地换代完善, 所以以上的内容之作参照之用,具体请关心斯威夫特的摩登消息,恐怕参照他事他说加以考察Swift API 文书档案,多谢。

 

 

2. 算术运算符

  • 加法( )
  • 加法运算符也扶助String级联:

"hello, " "world" // equals "hello, world"

  • 减法(-)
  • 乘法(*)

*注意:**与C和Objective-C中的算术运算符分化,斯威夫特算术运算符不容许值私下认可溢出。可以透过采纳斯威夫特的溢出运算符(比如a & b)选拔值溢骑行为。溢出总括请看高级运算符。*

澳门新萄京官方网站 14

溢出

var sum:Int8 = 0;
sum =   70   70;      //溢出报错
print(sum)
  • 除法(/)

空值转变操作符

空值调换符是对可空类型(可选类型)的一个值得调换出来(a ?? b)。

let defaultColorName = "red"
var userDefinedColorName: String?   // defaults to nil

var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName is nil, so colorNameToUse is set to the default of "red"

 

userDefinedColorName = "green"
colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName is not nil, so colorNameToUse is set to "green"

 

招待插手iOS工夫沟通群 461069757 

 

 

3. 求余运算符

求余数,如例:

sum =   -9 % 4; //sum equals -1
sum =   9 % 4;  //sum equals -1
sum =   -9 % -4;    //sum equals -1
sum =   9 % -4; //sum equals -1

如上所示,a % b的结果和b的暗号未有涉及,只与a的号子有关系。

界定操作符

关掉范围运算符 ... 和半闭合范围运算符 ..< 七个

for index in 1...5 {
    print("(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

 半关闭的范围运算符

let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..<count {
    print("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

 恐怕正如使用

for name in names[..<2] {
    print(name)
}
// Anna
// Alex

 

以及旁边限量的运算符,包涵左侧和右边多少个部分

for name in names[2...] {
    print(name)
}
// Brian
// Jack

for name in names[...2] {
    print(name)
}
// Anna
// Alex
// Brian

 

let range = ...5
range.contains(7)   // false
range.contains(4)   // true
range.contains(-1)  // true

 

4. 复合分配操作符

sum  = 2 // 等同于 sum = sum   2
sum -= 2 // 等同于 sum = sum - 2
sum *= 2 // 等同于 sum = sum * 2
sum /= 2 // 等同于 sum = sum / 2

*注意:**复合分配操作符没有重返值,let b = a = 2是破绽百出的。*

逻辑运算符

let allowedEntry = false
if !allowedEntry {
    print("ACCESS DENIED")
}
// Prints "ACCESS DENIED"

 

let enteredDoorCode = true
let passedRetinaScan = false
if enteredDoorCode && passedRetinaScan {
    print("Welcome!")
} else {
    print("ACCESS DENIED")
}
// Prints "ACCESS DENIED"

 

let hasDoorKey = false
let knowsOverridePassword = true
if hasDoorKey || knowsOverridePassword {
    print("Welcome!")
} else {
    print("ACCESS DENIED")
}
// Prints "Welcome!"

 

if enteredDoorCode && passedRetinaScan || hasDoorKey || knowsOverridePassword {
    print("Welcome!")
} else {
    print("ACCESS DENIED")
}
// Prints "Welcome!"

照旧利用括号使之越发便利阅读

if (enteredDoorCode && passedRetinaScan) || hasDoorKey || knowsOverridePassword {
    print("Welcome!")
} else {
    print("ACCESS DENIED")
}
// Prints "Welcome!"

 

5. 相比运算符

  • 等于(a == b)
  • 不等于(a != b)
  • 大于(a > b)
  • 小于(a < b)
  • 超过或等于(a >= b)
  • 低于或等于(a <= b)
  • 斯威夫特相比较三个字符串是还是不是完全相同时,可以直接使用(==),如:
let name = "world"
if name == "world" {
    print("hello, world")
} else {
    print("I'm sorry (name), but I don't recognize you")
}
// Prints "hello, world", because name is indeed equal to "world".
  • 正如成分数量同样、且不抢先7个要素、且不包括Bool值成分的元祖;
//当元祖中第一个元素已经得到比较结果时,就不在继续向下比较
(1, "zebra") < (2, "apple")   // true because 1 is less than 2; "zebra" and "apple" are not compared
(3, "apple") < (3, "bird")    // true because 3 is equal to 3, and "apple" is less than "bird"
(4, "dog") == (4, "dog")      // true because 4 is equal to 4, and "dog" is equal to "dog"

6. 长富规范运算符

question ? answer1 : answer2,如果questiontrue,执行answer1;如果为false,执行answer2
格式:

question ? answer1 : answer2
//等同于下面的写法
if question {
    answer1
} else {
    answer2
}

示例:

let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight   (hasHeader ? 50 : 20)
// rowHeight is equal to 90

7. Nil合併运算符

a ?? b,如果anil,返回b;如果a不为nil,返回a;
格式:

a ?? b
//等同于以下代码
a != nil ? a! : b

示例:

let defaultColorName = "red"
var userDefinedColorName: String?   // defaults to nil

var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName is nil, so colorNameToUse is set to the default of "red"

8. 限量运算符

  • 关掉范围运算符
    (a...b)a不可能超过b澳门新萄京官方网站,,运转范围在[a,b]之间;
for index in 1...5 {
    print("(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)之间;
let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..<count {
    print("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

9. 逻辑运算符

逻辑运算符修改或结成Bool逻辑值truefalse

  • 逻辑NOT(!a)
  • 逻辑AND(a && b)
  • 逻辑OR (a || b)

*注意:**&&||是左关联,及从左向右运算,但!的优先级高于&&||;*

参谋链接

用来记录平常遇上的标题,不对之处还望指教。

本文由澳门新萄京官方网站发布于www.8455.com,转载请注明出处:澳门新萄京官方网站Swift的基本运算符,部分基础

关键词: