swift中的几种基础类型
注:本文为作者自己总结,过于基础的就不再赘述 ,都是亲自测试的结果。如有错误或者遗漏的地方,欢迎指正,一起学习。
1、数字类型
数字类型包括整型 Int 和浮点型 Float,Double
- 整型
var a:Int = 10 //定义一个整型 初始化为10
var aa:UInt = 20 //无符号的整型 (不能为负数)
Int 包括Int8,Int16,Int32,Int64 ,他们表示8位 、16位、32位、64位。而Int的位取决于计算机是64还是32位 ,跟计算机保持一致 。
下面可以看看各个取值范围:
print(UInt8.max) //255
print(UInt8.min) //0
print(Int8.max) //127
print(Int8.min) //-128
print(Int16.max) //32767
print(Int16.min) //-32768
print(Int32.max) //2147483647
print(Int32.min) //-2147483648
print(Int64.max) //9223372036854775807
print(Int64.min) //-9223372036854775808
发现没,其实取值范围就是 负2的n-1次方 ~ 2的n-1次方-1
一个十进制数,没有前缀
一个二进制数,前缀是0b
一个八进制数,前缀是0o
一个十六进制数,前缀是0x
看代码:
var data1 = 17 //17
var data2 = 0b1010111 //87
var data3 = 0o713 //459
var data4 = 0xaf7 //2807
- 浮点型
let d1 = 9.99
print(d1.getMirror())
//Swift._LeafMirror<Swift.Double>(_value: 9.99,summaryFunction: (Function),quickLookFunction: (Function))
声明一个小数,编译器会自动推断成Double类型 而不会设定位Float,Double精确度很高,至少有15位数字,而Float最少只有6位数字。选择哪个类型取决于你的代码需要处理的值的范围。
数值类字面量可以包括额外的格式来增强可读性。整数和浮点数都可以添加额外的零并且包含下划线,并不会影响字面量:
let a1 = 00000022.3 //22.3
let a2 = 1_000_222_333 //1000222333
let a3 = 1_01.00_1_2 //101.0012
2、元组
元组(tuples)把多个值组合成一个复合值。元组内的值可以使任意类型,并不要求是相同类型
let status1 = (101,"我饿了")
这里就定义了一个元组
取值方法1 :
let (sKey,sValue)=status1
print(sKey) //101
print(sValue) //我饿了
如果你只需要一部分元组值,分解的时候可以把要忽略的部分用下划线(_)标记:
let (_,val) = status1
print(val) //我饿了
取值方法2:
通过下标来访问元组中的单个元素,下标从零开始
print("status1 key is \(status1.0),status1 value is \(status1.1)")
//status1 key is 101,status1 value is 我饿了
let status2 = (key:101,value:"我饿了")
print("status2 key: \(status2.key),status2 value : \(status2.value)")
当然我这里示例写的元素都只有两个,元组里面可以放多个元素
let status3 = (101,"我饿了","想喝水")
print(" \(status3.0),\(status3.1),\(status3.2)")
//101,我饿了,想喝水
如果需要修改元组的值也很简单 ,在定义的时候用var
var status4 = (101,"想喝水")
status4.0 = 191
print("\(status4.0 )") //191
元组在临时组织值的时候很有用,但是并不适合创建复杂的数据结构。如果想使用比较复杂的数据结构 , 请使用类或者结构体而不是元组
作为函数返回值时,元组非常有用。
func getMyStatus()->(Int,String)
{
return (101,"我饿了");
}
getMyStatus() //.0 101,.1 "我饿了")
我这里的示例都是非常简单的示例 ,但是个中用法都已介绍到位 。 希望能起到抛砖引玉的作用
3、可选类型 optionals
使用可选类型(optionals)来处理值可能缺失的情况
可选类型在上一节中大致介绍过,如果想声明一个可选类型的变量,只需要在后面加个? 就可以了,可以参考上一节 Swift 详解之一 ——– 变量声明
当需要将一个字符串强制转换成Int 类型的时候 ,这时候的有可能需要转换的字符串本身不是一个数字类型,就会返回一个nil
let strNum = "1223"
if let num = Int(strNum) {
print(num)
} //正常转换 输出:1223
let strNum1 = "122aaad34"
//这里使用可选绑定 将可选值绑定num1
if let num1 = Int(strNum1) {
print(num1)
}else{
print("it's not a number")
} //输出 it's not a number
4、断言
在某些情况下,如果值缺失或者值并不满足特定的条件,你的代码可能并不需要继续执行。这时,你可以在你的代码中触发一个断言(assertion)来结束代码运行并通过调试来找到值缺失的原因。
如果条件判断为true,代码运行会继续进行;如果条件判断为false,代码运行停止,你的应用被终止。
let age = -10
//你可以在断言加一个信息
assert(age>0,"age can not be less than zero")
//程序运行到这里会crash掉 后面的程序不会再执行
print("hello")
如果你的代码在调试环境下触发了一个断言,比如你在 Xcode 中构建并运行一个应用,你可以清楚地看到不合法的状态发生在哪里并检查断言被触发时你的应用的状态。此外,断言允许你附加一条调试信息。
本节完。