Swift - 基础部分
常量和变量
声明常量和变量
// 声明常量
let studentNumber = 1101
// 声明变量
var studentName = "Edward"
// 常量允许被修改
studentName = "Petter"
var x = 0.0,y = 0.0,z = 0.0
类型标注
// 显示指定类型
let age: Int = 21 // Int
var name: String // String
// 隐式指定类型
var zipCode = 610000 // Int
let address = "ChengDu" // String
常量和变量的命名
let π = 3.1415926
var 姓名 = "Edward"
var ?? = "dogName_Akitas"
输出常量和变量
print(姓名) // 输出 Edward
print("Hello,word!") // 输出 Hello,word!
print("He's name is '(姓名)'.") // 输出 He's name is 'Edward'.
注释
// 这是一个当行注释
/* 这是一个 多行注释 */
/* 这是第一个多行注释的开头 /* 这是第二个被嵌套的多行注释 */ 这是第一个多行注释的结尾 */
分号
let phoneSystem = "iOS"; print("The mobile phone system is '(phoneSystem)'.")
整形
浮点型
类型安全和类型推断
类型别名
typealias MyString = String
var variable: MyString // variable为MyString类型即String类型,因此只能赋字符串
布尔型
let isLogin: Bool = true
if isLogin == true {
print("已登录!")
}else {
print("未登录")
}
// 输出 已登录!
let isLogin: Bool = true
isLogin == true ? print("已登录!") : print("未登录")
// 输出 已登录!
var i = 1
if i {
// 这个例子不能通过编译,会报错
}
var i = 1
if i == 1 {
// 这个例子会编译成功
}
// i == 1的比较结果是Bool类型,所以第二个例子可以通过类型检查
元组
定义元组类型的变量// 定义元组变量,并指定初始值,系统推断该元组类型为:(String,Int,Double)
var studentInfomation = ("Edward",1101,93.2)
// 使用元组类型定义元组变量
var score: (String,Double)
// 为元组变量赋值时必须为所有成员都指定值
score = ("语文",98.5)
var programmingLanguage: (String,(String,String))
programmingLanguage = ("iOS",("Objective-C","Swift"))
获取元组中的元素值
var studentInfomation = ("Edward",93.2)
var programmingLanguage: (String,(String,String))
programmingLanguage = ("iOS","Swift"))
print(studentInfomation.0) // 输出 Edward
print(studentInfomation.1) // 输出 1101
print(programmingLanguage.0) // 输出 iOS
print(programmingLanguage.1.0) // 输出 Objective-C
var studentInfomation = ("Edward",93.2)
let (stuName,stuNumber,stuScore) = studentInfomation
print(stuName) // 输出 Edward
print(stuNumber) // 输出 1101
print(stuScore) // 输出 93.2
var studentInfomation = ("Edward",93.2)
let (stuName,_,_) = studentInfomation
print("student's name is '(stuName)'.") // 输出 student's name is 'Edward'.
为元组中的元素命名
var 个人信息 = (姓名: "Charles",phoneNumber: 13219038892)
print("(个人信息.姓名)的手机号码是:(个人信息.phoneNumber)")
// 输出 Charles的手机号码是:13219038892
可选类型可选和nil
有值,等于 x
或者
无值,等于 nil
let possibleNumber = "123"
// convertedNumber 被推测为类型 "Int?",或者类型 "optional Int"
let convertedNumber = Int(possibleNumber)
print(convertedNumber) // 输出 Optional(123)
// 如果possibleNumber的值为"abc",则convertedNumber输出nil。
let a: Int = nil; // Int类型不能置为nil,程序报错
let b: Int? = nil; // Int?可选类型允许置为nil
if语句以及强制解析
let roomNumber: Int? = 1101
if roomNumber == nil {
print("当前无房间!")
}else {
print("当前有房间,房间号为:(roomNumber!)")
}
// 输出 当前有房间,房间号为:1101
可选绑定
var str = "123"
if var temp = Int(str) {
print("转换成功,其值为:(temp)")
}else{
print("转换失败!")
}
// 输出 转换成功,其值为:123
隐式可选类型
var phoneType: String! = "iPhone"
print(phoneType) // 输出 iPhone, 无需使用 ! 进行强制解析
Guard语句
举例分析
func checkup(person: [String: String!]) {
// 检查身份证,如果身份证没带,则不能进入考场
guard let id = person["id"] else {
print("没有身份证,不能进入考场!")
return
}
// 检查准考证,如果准考证没带,则不能进入考场
guard let examNumber = person["examNumber"] else {
print("没有准考证,不能进入考场!")
return
}
// 身份证和准考证齐全,方可进入考场
print("您的身份证号为:(id),准考证号为:(examNumber),请进入考场!")
}
checkup(["id": "1101"]) // 输出 没有准考证,不能进入考场!
checkup(["examNumber": "S1101"]) // 输出 没有身份证,不能进入考场!
checkup(["id": "1101","examNumber": "S1101"]) // 输出 您的身份证号为:1101,准考证号为:S1101,请进入考场!
guard与if语句的区别
错误处理
func canThrowAnErrow() throws{
//this function may or may not throw an error
}
do {
try canThrowAnErrow()
// 没有错误消息抛出
} catch {
// 有一个错误消息抛出
}
举例分析如何建造异常类型?
// 出去玩可能被导致去不了的原因
enum PlayError: ErrorType {
case NoGoodWeather // 没有好天气
case NoMoney // 没有钱
case NoTime // 没有时间
case NoPartner // 没有伙伴
}
如何抛出异常?
// 检查导致不能出去玩的原因是否存在
func checkIsPlay(isNoGoodWeather: Bool,isNoMoney: Bool,isNoTime: Bool,isNoPartner: Bool) throws {
guard isNoGoodWeather else {
throw PlayError.NoGoodWeather
}
guard isNoMoney else {
throw PlayError.NoMoney
}
guard isNoTime else {
throw PlayError.NoTime
}
guard isNoPartner else {
throw PlayError.NoPartner
}
}
如何获取并处理异常?
func Play(isNoGoodWeather: Bool,isNoPartner: Bool) {
do {
try checkIsPlay(isNoGoodWeather,isNoMoney: isNoMoney,isNoTime: isNoTime,isNoPartner: isNoPartner)
print("随便耍!")
}catch PlayError.NoGoodWeather {
print("天气不好,不去耍了!")
}catch PlayError.NoMoney {
print("没有钱,不去耍了!")
}catch PlayError.NoTime {
print("没有时间,不去耍了!")
}catch PlayError.NoPartner {
print("没人陪我,不去耍了!")
}catch {
print("见鬼了")
}
}
不处理异常
断言断言简介与使用
let age = 16
assert(age >= 18,"有未成年人进入网吧!") // 因为age < 18,程序奔溃!
何时使用断言?当条件可能为假时使用断言,但是最终一定要保证条件为真,这样你的代码才能继续运行。断言的适用情景:
参考网址: 参考资料:《疯狂Swift讲义》 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |