斯威夫特语言学习,斯维夫特3学习笔记

By admin in 4858.com on 2019年4月13日

运算符是用来检查,更改或组合值的特殊符号或短语。Swift提供的洋洋例行的运算符,如+、-、*、/、%、=、==等,以及逻辑运算的&&、||等等,基本上不需求再一次介绍,我们在此处只要求掌握一些不太1致的运算符就能够了。如Swift引入的国民党的新生活运动算符,范围操作符号,蕴涵..<和…八个,该随笔介绍斯威夫特常规的运算符中,以及和其余语言有所差异的局地。

运算符是用来检查,更改或组合值的特殊符号或短语。Swift提供的众多正规的运算符,如+、-、*、/、%、=、==等,以及逻辑运算的&&、||等等,基本上不须要再行介绍,大家在此地只要求领悟部分不太雷同的运算符就足以了。如斯维夫特引进的国民党的新生活运动算符,范围操作符号,包含..<和…四个,该小说介绍Swift常规的演算符中,以及和此外语言有所分化的片段。

操作符是用来检查实验、更改或然组合值的特殊符号或短语。例如,加法操作符
(+) 将五个数字加到1起 (如 let i = 壹 + 2)。更扑朔迷离的例子包罗逻辑与操作符
&& (如 if enteredDoorCode && passedRetinaScan) 和自增操作符 ++i,正是把
i 的值加一的神速格局。

部分基础运算符

 

 

斯维夫特 扶助超过半数标准的C
操作符并且改善了几项意义以去掉周围的编码错误。赋值操作符 (=)
不重回值,是为了防备想用等于操作符(==)时十分的大心用成了赋值操作符。算数运算符
(+, -, *, /, % 等等)
检查测试并取缔值溢出,以防运算时搜查缴获的结果出乎或低于类型允许的限制。

运算符有1元、二元和长富运算符:

赋值运算符

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
陆的脚本写法,通过把左边元祖对象解构赋值给左侧对应的参数。

 

赋值运算符

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,Swift 可以对浮点数举行取余操作 (%)
。 Swift 还提供三个范围操作符 (a..<b 和 a…b)
,那在C里是从未有过的,用来代表一个限量的值。

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

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

  • 安慕希运算符操作八个操作数。像C1样,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斯威夫特语言学习,斯维夫特3学习笔记。)

  • 小于 (a < b)

  • 不止等于 (a >= b)

  • 紧跟于等于 (a <= b)

别的值得注意的是,斯威夫特提供了对待引用的四个操作符号,=== 和 !==,用来检查两个引用是否完全相等;或者不相等的。而==只是用来对比两个对象的值是否一致。

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".

 

数学生运动算符

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里的常用操作符。

一. 分配运算符

  • 该赋值运算符(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)

 

伊利运算符

新年初中一年级运算符 ? :和C#里面表现是千篇1律的

question ? answer1 : answer2

 

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

 

4858.com ,术语

操作符分壹元、2元和长富:

一元操作符操作于多个10足指标(如
-a)。一元前缀操作符在它们的对象以前紧跟出现(如
!b),壹元后缀操作符在它们的靶子之后紧跟出现(如 i++)。 
2元操作符操作于多个对象(如 二 +
三),是中缀操作符,因为它出现在多少个对象的中级。 
安慕希操作符操作于四个对象。像 C
壹样,Swift 唯有3个长富操作符,正是元春条件操作符 (a ? b :
c)。 
操作符影响的值称为操作数。在表明式 一 + 2中,符号 + 是三个二元操作符,它的操作数是值 一 和 二。

 

一、一元运算符

  (一)、负号运算符

4858.com 1

 

 

  (2)、正号运算符

4858.com 2

注 : 乘 (*)、 除
(/)与OC用法相同

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

 

4858.com 3

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

 

二、贰元运算符

 (1)、赋值运算符

     
  
一、赋值操作符 (a = b) 用 b 的值初步化或更新 a
的值:

4858.com 4

 

       二、假如赋值操作符的右边是贰个有多少个值的元组,它的要素得以及时被拆散为八个常量或变量:

4858.com 5 

 

    三、不像 C 和 Objective-C
里的赋值操作符,斯维夫特里的赋值操作符本身并不再次回到值。上边包车型地铁话语是非常的:

 4858.com 6

 这么些天性防止了赋值操作符 (=)
被误用作等于操作符 (==) 。Swift 帮您幸免 if x = y
这几个错误在代码里现身。

 

  (2)、取余运算符

4858.com 7

 

 

  (三)、组合赋值运算符

 4858.com 8

 

 (四)、相比较运算符

Swift 匡助全数正规的 C
相比较操作符,具体效果和应用方式与C语言相同,在此不再赘述 

等于 (a == b)

不等于 (a != b)

大于 (a > b)

小于 (a < b)

高于或等于 (a >= b)

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

 

 (五)、逻辑运算符

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

逻辑否 (!a)

逻辑与 (a && b)

逻辑或 (a || b)

 4858.com 9

 

上边八个是swift新增的八个运算符:

 (6)、区间运算符

   一、全闭区间

4858.com 10

关闭范围操作符 (a…b) 定义了三个从 a 到 b
的界定,同时蕴涵a 和 b 的值。a 的值必须不可能超出 b 。

 

   二、半开半闭区间

4858.com 11

半开范围越发适用于从0开端的列表,如数组,平昔数到(但不包罗)列表的尺寸

 

 (七)、空合运算符

  空合运算符(a ?? b)将对可选类型a举办空判断,即便a包涵贰个值就进行解封,不然就回到多个默许值b.那一个运算符有三个规范:

  表达式a必须是Optional类型

  默认值b的花色供给求和a存款和储蓄值的体系保持1致

4858.com 12

 4858.com 13

 

三、长富运算符 

伊利条件操作符分八个部分,格局是这么的
question ? answer一 : answer贰。

例如:a > b ? a : b

利用效果同C语言的3木运算符,在此不再赘述 

 

 

是因为苹果集团表露斯威夫特才刚满一年有着的功能都在持续地翻新完善,
所以以上的剧情之作参照之用,具体请关怀斯维夫特的流行资讯,也许参考斯威夫特 API
文书档案,谢谢。

 

 

二. 算术运算符

  • 加法(+)
  • 加法运算符也支持String级联:

“hello, ” + “world” // equals “hello, world”

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

*注意:**与C和Objective-C中的算术运算符区别,Swift算术运算符不相同意值暗中同意溢出。能够由此选用Swift的溢出运算符(例如a
&+
b)接纳值溢出作为。溢出计算请看高级运算符。*

4858.com 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"

 

空值转换操作符

空值转换符是对可空类型(可选类型)的2个值得转换出来(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技术沟通群 四陆106975七 

 

 

三. 求余运算符

求余数,如例:

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

 

限制操作符

关闭范围运算符 … 和半闭合范围运算符 ..< 两个

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

 

逻辑运算符

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)
  • Swift相比四个字符串是不是完全相同时,能够间接选拔(==),如:

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".
  • 正如成分数量同样、且不当先几个因素、且不包括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"

八. 限量运算符

  • 关闭范围运算符
    (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

九. 逻辑运算符

逻辑运算符修改或组合Bool逻辑值truefalse

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

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

参照链接

用来记录平日赶上的题目,不对之处还望指教。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有