自从苹果2014年发布Swift,到现在已经两年多了,而Swift也来到了3.1版本。最近利用工作之余,把官方的Swift编程指南看了一遍。现在整理一下笔记,回顾一下以前的知识,有需要的同学可以去看Swift官方文档。
主要:Swift中在进行基本运算时必须保证类型一致,否则会出错
常量&变量
1、什么是常量和变量
在Swift中规定:在定义一个标识符时必须明确说明该标识符是一个常量还是变量
使用let来定义常量,定义之后不可以修改
使用var来定义变量,定义之后可以修改
常量和变量的基本使用
import UIKit
let a : Int = 10
// 错误写法,当一个字段定义为常量时是不可以修改的
// a = 20
var b : Int = 20
// 因为b定义为变量,因此是可以修改的
b = 30
2、常量和变量的使用注意:
注意:
在真实使用过程中,建议先定义常量,如果需要修改再修改为变量(更加安全)
是指向的对象不可以再进行修改.但是可以通过指针获得对象后,修改对象内部的属性
Swift中数据类型
1、浮点型
Float : 32位浮点型
Double : 64浮点型(默认)
// 定义一个Int类型的变量m,并且赋值为10
var m : Int = 10
// 定义一个Double类型的常量n,并且赋值为3.14
let n : Double = 3.14
Swift中的类型推导
Swift是强类型的语言
Swift中任何一个标识符都有明确的类型
注意:
如果定义一个标识符时有直接进行赋值,那么标识符后面的类型可以省略.
因为Swift有类型推导,会自动根据后面的赋值来决定前面的标识符的数据类型
可以通过option+鼠标左键来查看变量的数据类型
// 定义变量时没有指定明确的类型,但是因为赋值给i一个20.20为整型.因此i为整型
var i = 20
// 错误写法:如果之后赋值给i一个浮点型数值,则会报错
// i = 30.5
// 正确写法
var j = 3.33
j = 6.66
2、Swift中基本运算
Swift中在进行基本运算时必须保证类型一致,否则会出错
相同类型之间才可以进行运算
因为Swift中没有隐式转换
数据类型的转化
Int类型转成Double类型:Double(标识符)
Double类型转成Int类型:Int(标识符)
let a = 10
let b = 3.14
// 错误写法
// let c = a + b
// let c = a * b
// 正确写法
let c = Double(a) + b
let d = a + Int(b)
3、Swift支持全部C语言的标准运算符:
等于 (a == b)
不等于 (a != b)
大于 (a > b)
小于 (a < b)
大于或等于 (a >= b)
小于或等于 (a <= b)
注意:Swift还额外提供了恒等运算符 (identity operator) (===和!==),用来判断两个对象是否引用同一个实例。
4、所有的比较运算符都会返回一个Bool值:
1 == 1// true 因为 1 等于 1
2 != 1// true 因为 2 不等于 1
2 > 1// true 因为 2 大于 1
1 < 2// true 因为 1 小于 2
1 >= 1// true 因为 1 大于或等于 1
2 <= 1// false 因为 2 不是小于或等于 1
5、比较运算符通常用于条件语句,例如if语句:
let name = "world"
if name =="world" {
print("hello, world")
} else {
print("I'm sorry \(name), but I don't recognize you")
}
6、逻辑非运算符
Swift支持这三个标准的逻辑运算符:逻辑非 (!a),逻辑与 (a && b),逻辑或 (a || b)
//逻辑非让一个布尔值取反,true变为false,false变为true。
let allowedEntry = false
if!allowedEntry {
print("拒绝访问")
}
// Prints "拒绝访问"
逻辑与运算符(a && b)两边的逻辑语句都为true时,整个语句才是true。如果有其中一个为false,整个语句就为false。实际上,只要第一个语句是false,第二个语句就不会在计算了,因为第二个语句无论是true还是false都不可能把最终的结果改为true。
let enteredDoorCode = true
let passedRetinaScan = false
if enteredDoorCode && passedRetinaScan {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "ACCESS DENIED"
// 逻辑或运算符 (Logical OR Operator)
逻辑或运算符两边的逻辑语句,只要有一个是true,那整个语句就是true。如果第一个语句是true,第二个就不会再计算。
let hasDoorKey = false
let knowsOverridePassword = true
if hasDoorKey || knowsOverridePassword {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "Welcome!"
组合逻辑运算符 (Combining Logical Operators)
if enteredDoorCode && passedRetinaScan || hasDoorKey || knowsOverridePassword {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "Welcome!"
在这个例子中,使用多个&&和||运算符来创建一个更长的复合语句。但是&&和||运算符还是仅仅操作两个逻辑语句。上面的代码可以这么读:如果我们输入了正确的门密码并且通过了视网膜扫描,或者有门钥匙,或者我们知道紧急覆盖密码,那么就允许进入。
// 在恰当的位置加上括号,增强代码的易读性:
if (enteredDoorCode && passedRetinaScan) || hasDoorKey || knowsOverridePassword {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
swift3.1
更多精彩内容,请关注爱恨的潮汐微信公众号(微信ID:xueyuanxunmeng)
编辑人员:爱恨的潮汐(2017.4.13)