Swift笔记之基础
声明一个变量
var name = "我是客服";
申明一个常量
let youName = "不是客服";
youName = "你才是客服"; //将会编译不通过
打印
print("string");
//打印字符串
var name = "tomas";
print("my name is \(name)");
//打印整数
var age = "12";
print("my age is \(age)");
分号
Swift 不一定需要分号,在一行中写两句代码才需要
let name = "cat"; var age = 12;
//不需要分号写法
let name = "cat"
var age = 12
整形
Swift 提供8 ,16,32和64位整形和无符号整形,命名方法和C相似,8位无符号为UInt8
,32位为Int32
.
获取最大最小值方法
let minUInt = UInt8.min
let maxUInt = UInt8.max
Int & UInt
- 在32位平台上,Int 就是32位的
- 在64位平台上,Int 就是64位的
浮点类型
- Double 相当于64位的浮点类型
- Float 相当于32位的浮点类型
*
### Swift是类型安全和类型推断的
var age = 12;
age = "Tomas"; //这行是编译不通过的,age 已经推断为Int型,无法赋值String类型
数字样式
- 十进制 没有前缀
- 二进制 0b开头
- 八进制 0o开头
- 十六进制 0x开头
科学计数法
十进制
- 1.25e2 -> 1.25 x 102 or 125.0.
- 1.25e-2 -> 1.25 x 10-2 or 0.0125.
十六进制
- 0xFp2 -> 15 x 22, or 60.0.
- 0xFp-2 -> 15 x 2-2, or 3.75.
12.1875的多种写法
let decimalDouble = 12.1875
let exponentDouble = 1.21875e1
let hexadecimalDouble = 0xC.3p0
还可以增加一些额外的格式来使数字更容易看懂
let paddedDouble = 000123.456
let oneMillion = 1_000_000
let justOverOneMillion = 1_000_000.000_000_1
强行转换
let a = 12.9;
var b: Int = Int(a);
类型别名
就是和C++一样,可以吧Int改为另外一个名字
typealias AudioSample = UInt16;
var maxAmplitudeFound = AudioSample.min;
布尔类型
Swift 有个基本数据类型Bool, 取值true or false
let orangesAreOrange = true
let turnipsAreDelicious = false
元组
装包
let http404Error = (404, "Not Found");
//http404Error 类型就是(Int,String) 类型
拆包
var http404NotFound = (404,"NOT FOUND");
var (code,message) = http404NotFound;
print(code,message);
部分拆包
var (code,_) = http404NotFound;
直接通过下标去访问
print(http404NotFound.0,http404NotFound.1);
还可以直接通过key访问,像Map一样
var http500 = (code : 500,message:"Sever Error");
print(http500.code,http500.message);
optional(可选项)
思考以下代码,convertedNumber 是optional Int 还是 Int
let possibleNumber = "123";
let convertedNumber = Int(possibleNumber);
由于posssibleNumber 并不是一定是可以转换为Int类型的,当不能返回的时候就是nil,所以应该是optional Int 对象。
nil
你可以给一个可选类型设置nil值
var version: Int? = nil;
print(version)
非可选类型是不可以给一个nil值的,只有可选类型才可以
直接定义个可选类型默认就是nil赋值
var version: Int?;
print(version) ;//为nil
和OC上的nil并不是一样的,Swift上的只是实际值不在的时候一个确定的赋值类型,并不仅仅用于对象,所有类型都是可以的
if 语句以及强制解析
判断可选类型中是否有值
if containAValue != nil{
//do something
}
使用可选类型
if containAValue != nil{
print("\(containAValue!)");
}
使用"!"强制使用可选类型的时候必须确定部位nil,不然将会出现错误
可选绑定
var name : String? = "test";//name 不为nil时将会执行
if let myName = name{
print(myName);
}
错误处理
错误处理写法
do {
try canThrowAnError()
// no error was thrown
} catch {
// an error was thrown
}