Swift基础

变量和常量

Swift是一个类型安全的语言,可选就是一个很好的例子。如果你期望得到一个 String类型,类型就会阻止你传入一个其他类型的值
如果要添加类型标注,需要在常量或者变量名后面加上一个 冒号和空 ,然后加上类型名称。
常量和变量名不能包含数学符号,箭头,保留(或者非法的)Unicode码位,连线与制表符。可以是任意字符包括中文
如果使用关键字作为常量或者变量的名称需要用`包围起来
swift提供了8,16,32,64位的有符号和无符号整数
例如:8位无符号整型UInt8
let minV = UInt8.min//UInt8最小值
let maxV = UInt8.max///UInt8最大值
Int能自适应当前平台的原声字长
Swift提供类两种有符号浮点类型:
Double:64位浮点
Float:32位浮点
swift会在编译代码是进行类型检测
当推测浮点数类型时,swift总会选择Double

字面量
浮点字面量可以是十进制或者十六进制
十进制浮点数种通过e或E,十六进制浮点数中通过p或P指定指数
整数和浮点数都可以添加额外的零并且包含下划线,并不影响下划线
let a = 00123
let b = 1_000_000
let c = 1.000_001

为什么推荐使用Int?
Int可以自适应平台,比如64为平台,Int就相当于UInt64,Int64.总是使用默认的整数类型可以保证你的整数常量和变量可以直接被复用并且可以匹配整数类字面量类型推测

类型别名
类型别名是再为类型再取一个名字
别名的定义:
typealias sample = UInt16

布尔值(Bool)
布尔常量:true,false

元组(Tuple)
元组把多个值组合成一个复合值
元组中的元素的类型可以不一样
let http404Error= (404, "Not Found")
可以将元组的内容分解成单独常量和变量
let (T1,T2) = http404Error//可以单独使用T1,T2
如果你只需要分解的一部分元组,不需要的部分你可以使用_代替
let (T1,_) = http404Error
也可以通过元组的下标来访问元组的元组
http404Error.0
可以为每个元素定义名
let  http404Error=(name1:404, name2:"Not Found")
http404Error.name2
元组适合存储临时数据,如果数据比较复杂,不是临时存储,需要使用类和结构体

可选(Optional)
Swift中增加了可选(Optional)类型,用于处理值的缺失。可选表示有值并且等于x或者没值,有点像oc中使用nil,但是它可以用于任何类型上,更加安全
var str = "123"
var value = str.toInt()
value  是一个可选值,因为toInt()方法可能成功也可能失败(可能返回Int也可能不返回Int)
if(let v =value){}//?表示可选,当可选有值就返回true否则就返回false
!表示知道这个可选有值,!对可选值的强制解析。如果!前的可选值是nil那么就会发生运行时的错误
可选绑定
使用可选绑定(optional binding)来判断可选是否包含值,如果包含就把值赋给一个临时
常量或者变量
if(let v =value){}
你可以给可选变量赋nil表示没有值
nil不能非可选变量和常量
如果你声明一个可选变量没有赋值,会自动被设置为nil
var surveyAnswer: String?

Swift中的nil和Objective-c中的nil的区别?
OC中,nil是一个指向不存在对象的指针。Swift中,nil不是指针,他是一个确定的值,用来表示值的缺失,任何类型的可选都可设置成nil。

隐式解析可选
可选可以使用if来判断是否有值,有值的话可以通过可选绑定来解析值

有时候,在程序架构中,第一次被赋值后,可以确定一个可选总会有值。这种情况下,每次都要判断和解析可选值是非常低下的,因为可以确定它总会有值。这种类型的可选被定义为隐式解析可选。把可选后面的?改为!来声明一个隐式解析可选
隐式解析可选主要用于在类的构造中
把!放在类型的后面,不是每次取值的可选名字的结尾
let assumedString: String! = "An implicitly unwrapped optional string.
"
判断
在某种情况下,如果值缺失或者不满足特定的条件,你的代码可能并需要继续执行。你可以在代码中中出发一个断言(assertion)来结束代码运行并通过调试来找到值缺失的原因
断言会在运行时判断一个条件是否是true。你可以使用断言来保证运行一些代码之前,某 些条件已经满足。如果是fase代码停止运行
可以使用全局 assert 函数来写一个断言。向 assert 函数传入一个结果为 true 或者 false
的表达式以及一条信息,当表达式为 false 的时候这条信息会被显示:
let age = -3
assert(age >0, "A person's age cannot be less than zero" )
断言信息不能使用字符串插值,但是可以省略
断言的使用情景
1、整数的附属脚本索引被传入一个自定义的附属脚本实现,但是下表索引可能太小或者太大
2、需要给函数传入一个值,但是非法的值可能会导致函数不能正常执行
3、一个·可选值,现在是nil,但是后面的代码运行需要一个非nil的值
基本运算符
与C和OC不同:
1、Swift的赋值号=不返回任何值
if(x = y){}//错误
2、Swift中默认不允许数值运算出现溢出的情况。但是可以使用溢出运算符来达到有目的的溢出(a & +b)
let dog: Character = "d"
3、Swift可以对浮点数求余
单目负号写在操作数之前, 中间没有空格.
4、区间运算符。...闭区间,..后开区间
逻辑与&&
逻辑或||


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值