美文网首页
01.Swift 4.0 基础介绍

01.Swift 4.0 基础介绍

作者: biyu6 | 来源:发表于2018-05-23 17:55 被阅读0次

/*:
 Swift的基本类型:Int 整型;Double、Float 浮点型;Bool 布尔型;String 文本型。
 Swift的集合类型:Array、Dictionary、Set
 Swift的高阶类型:元组(Tuple),可以创建或传递一组数据,在作为函数返回值时,可以用一个元组返回多个值
 Swift的可选类型:Optional类型,用于处理值缺失,表示哪儿有一个值为x,或者那儿没有值;类似于OC中的nil,但比其更加安全、强大,可以用在任何类型上,包括类
 
 Swift是一门类型安全的语言,传入错误的类型(例如:需要String传入了Int、需要String传入了可选的String)会立刻报错提示
 
 let用来声明常量,如果你处理的值不需要改变,使用常量会让代码更加安全
 var用来声明变量,变量的值可以随意更改
 Swift声明常量或变量时,不需要指定具体的类型,编译器或根据赋值情况自动推断,也可以在变量后声明类型,例如:
    let age: Int = 17 //声明了一个Int型的常量age,并赋值为17,且age值不可更改
    var name: String = "张三" //声明了一个String类型的变量,它的初始值是"张三",name可以在后面随意更改

 语法规范:
    在一行中声明多个常量或变量,用逗号隔开
    可以不写分号,但如果在一行中写两条语句,需要用分号隔开
    多行注释可以嵌套
    变量常量的名称规范:不能用数字开头、不能使用数学符号、箭头、非法的Unicode字符、可以使用汉字、π、一些表情等

 */

//=================================c常量变量、多行字符串、取值范围、别名=================================
let age:Int = 17
let name:String = "张三"
print("定义属性打印的值为:\(age),\(name)")

//在一行中声明多个常量或变量,用逗号隔开
let x=0.0,y:String = "张三",z = 1
print(x,y,z)
//如果声明的是同样类型的常量或变量,用逗号隔开,最后一个变量后加上类型
var a,b,c:String


let nameAge =  name + String(age)
print("类型的强制转换拼接:\(nameAge)")

let apples = 3
let oranges = 5
print("值转换为字符串:我有\(apples)个苹果,算上橘子一共有\(apples + oranges)个水果")

//对于多行的字符串使用三个双引号(“”)。删除每个引用行的开始处的缩进,只要它与结尾引号的匹配就行。例如:
let quotation = """
I said "I have \(apples) apples."
And then I said "I have \(apples + oranges) pieces of fruit."
"""

//可以用.min、.max查看一种类型的最小和最大取值范围
let minValue = Int.min
let maxValue = Int.max

//给类型定义别名
typealias myInt = Int
let myNum = myInt.max

//=================================元组=================================
//元组(tuples)把多个值组合成一个复合的值。元组内的值可以是任意类型,且不要求是相同类型
let http404Error = (404,"Not Found")//一个类型为(Int,String)的元组
let (stateCode,stateMsg) = http404Error
print("元组的完全分解:\(stateCode)---\(stateMsg)")

let (code,_) = http404Error//只获取想要的code,不想要的元组数据用_表示
print("元组的不完全分解:\(code)")

let errMsg = http404Error.1//可以通过元组的下标来获取该下标的值
print("通过下标获取元组中的值:\(errMsg)")

let http200State = (statusCode:200,description:"成功")//定义元组时可以给单个元素命名
print("通过元组中的元素名称获取值:\(http200State.statusCode)")


//=================================可选类型? 强制解析!隐式解析!=================================
let possibleNum = "hello"//123
let convertedNum = Int(possibleNum) //把一个字符串转换成Int,有可能会失败,失败后就是nil,此时convertedNum被推断为Int?类型,表示是可选类型

var serverResponseCode: Int? = 404 //可选类型,值为404
serverResponseCode = nil//赋值为nil,表示它没有值

//nil不能用于非可选的常量和变量;在Swift中nil不是一个指针,而是一个确定的值,用来表示值缺失
var sur: String? //如果在String后面加?下面赋值就会报错
sur = nil

var xxxx: Int?
if xxxx == nil {
    print("如果xxxx不是可选类型,xxxx==nil的判断会报错")
}

var opValue: String?
//opValue = "小时"
if opValue != nil {//强制解析前需要判断是否为nil,否则会报错
    print("强制解析一个可选值:\(opValue!)")
}

//隐式解析:已经肯定变量在生命周期中都不会为nil才可以使用隐式解析可选类型
//let optValue: String? = "第一次赋值"//如果能保证optValue一直会有值,可以把?换成!这样每次用的时候就不需要解析了
//let forValue: String = optValue!//需要加!来获取值
let optValue: String! = "我已经有值了"//一个可以自动解析的可选类型,在声明的时候就把!放在类型的结尾,然后就可以直接取值了
let forValue: String = optValue//不用加!直接取值,因为在定义的时候就已经加!了
if optValue != nil {
    print("仍然可以判断隐式解析的可选类型是否包含值")
}
if let defiValue = optValue {
    print("也可以在可选绑定中 使用隐式解析可选类型来检查值:\(defiValue)")
}


//=================================可选绑定=================================
//判断可选类型是否包含,如果包含值就把值赋值给一个临时常量或变量
var optNum: Int?
optNum = 134
if let actuNum = optNum { //如果optNum 有值,会赋值给actuNum,在该代码块中可以使用
    print("optNum有值:\(actuNum)")
}else{//如果没有值,进入这里 相当于actuNum没有定义
    print("可选值optNum没有值")
}

//可以有多个可选绑定在一个if语句中,中间只需要用逗号来分割,每个逗号都相当于一个条件
if let num1 = Int("4"),let num2 = Int("张"),num1 < num2 {//第一个条件就相当于判断Int("4")是不是为nil,如果为nil就为flase
    print("三个条件都不为nil:\(num1,num2)")
}else{
    print("三个条件中有不成立的条件")
}


//=================================错误处理=================================
//可能抛出错误的函数
func makeASandwich() throws {
    //一个函数可以通过在声明中添加throws关键词来抛出错误消息。
}
do {
    try makeASandwich()
    print("如果没有错误会走这")
} catch {
    print("有错误会走这,catch后面可以跟一下具体的错误信息,类似于switch的case,可以有很多个catch条件")
}

//使用断言进行调试
let myAge = 3//如果这个值是负数,下一句就会报错
assert(myAge >= 0, "一个人的年龄不可能小于0岁")//断言,就相当于一个报错机制,如果条件符合就不会报错,条件不符合会立刻报错
if myAge > 0 {
    print("这个是大于0岁的年龄")
}else{
    assertionFailure("一个人的年龄不可能小于0岁")//断言失败
}

//强制执行先决条件
func toBool(x: Int) -> Bool {
    precondition(x == 0 || x == 1, "此函数只能将0或1转换为布尔函数。")//判断传入的值是否符合条件,如果不符合就会报错
    if x == 0 {
        return false
    }
    return true
}
let ttttt = toBool(x: 0)
//let tt = toBool(x: 3)//传入非0、1的参数就会报错


相关文章

  • 01.Swift 4.0 基础介绍

  • 精通ASP.NET 4.0网络编程

    《精通ASP.NET 4.0网络编程》本书从实战出发,全面、系统地介绍了微软新发布的asp. 4.0网络开发基础、...

  • ios蓝牙框架CoreBluetooth使用

    相关基础知识介绍 蓝牙常见名称和缩写 BLE:(Bluetooth low energy)蓝牙4.0设备因为低耗电...

  • iOS蓝牙开发

    本文主要介绍基于蓝牙4.0的智能硬件开发。蓝牙4.0主要基于

  • 矿用照明信号综合保护装置ZBZ-4.0

    矿用照明信号综合保护装置ZBZ-4.0 ZBZ4.0照明信号综合保护装置 ZBZ4.0照明信号综合保护装置产品介绍...

  • py基础4.0

    一、循环 (vba 的for···next,do while) 1、for x in s: (冒号!!!!)把s中...

  • LightBlue 基础使用教程

    LightBlue 介绍 以下摘自 Appstore的介绍 1.支持蓝牙4.0 LightBlue can tes...

  • iOS蓝牙实现汇总

    一、相关介绍 CoreBluetooth专门用于与BLE设备通讯。并且现在很多蓝牙设备都支持4.0,4.0以其低功...

  • OC-蓝牙

    一、相关介绍 CoreBluetooth专门用于与BLE设备通讯。并且现在很多蓝牙设备都支持4.0,4.0以其低功...

  • iOS蓝牙4.0基础开发

    1.蓝牙开发基础 蓝牙4.0是低电量模式所以也叫4.0BLE。本文将使用iOS系统提供的CoreBluetooth...

网友评论

      本文标题:01.Swift 4.0 基础介绍

      本文链接:https://www.haomeiwen.com/subject/jiqdjftx.html