前端零基础学IOS 开发| 青训营笔记

54 阅读2分钟

项目代码 MyCalculator


1、前端零基础学IOS 开发| 青训营笔记

这是我参与「第四届青训营 」笔记创作活动的第3天

这次我们又回到理论,搞点Swift的基础知识。

2、几个JS中没有(或者我不知道😊的)东西

2.1、optional容器对象

2.1.1、什么是optional类型的数据呢?

optional类型的值不确定,有可能是有,有可能为空,好处是防止这个程序直接报错崩溃

2.1.2、怎样定义一个optional类型的数据?

//这时这个name变量就是一个optional类型的数据
let name:String?
name =  nil
name = "potkiss"

2.1.3、怎样使用optional的数据?

注意这里遇到一个前端陌生的词,解包,使用optional的数据都需要解包,这里提到两种解包方法,if let是普通的解包,!是强制解包,即这个optional的数据不能是空的

// 有两种方法解包
// 1、if let
let name:String?
name = "potkiss"
if let user = name {
    print("User-\(user)") //User-potkiss
}
name = nil
if let user = name {
    print("User-\(user)") //User
}
// 2、!
let age:String!
age = nil // 报错

2.2、guard

推荐的一篇关于guard的文章

guard 适用于多个if嵌套的情况,必须要有return,必须要写在函数里面,必须要有else语句

let bb:Bool = false
if bb {
    print("BB is OK")
} else {
    print("BB is bad") //"BB is BAD"
}
func guardTest () {
    guard bb else { // guard适用于多个if嵌套的情况,记得return,必须写在函数内,必须有else语句
        print("BAD")
        return
    }
    print("OK")
}
guardTest() // "BAD"

2.3、protocol协议

这个东西需要我们配合类这个概念来理解,大概可以理解为定义了一个protocol,要是有一个类拓展了或者继承了这个协议,则这个协议里面的方法必须在这个类里面有,这个类里面没有这个协议里面的方法的时候就会报错

protocol EatAble {
    func eat() -> String
}
extension Bird: EatAble { // Bird必须要这个协议里面的函数
    func eat() -> String {
        "吃谷物"
    }
}
let bird2  = Bird()
print(bird2.eat())
class Man: EatAble { // Man里面必须要有这个eat的函数
    func eat() -> String {
        "人吃饭"
    }
}
let man  = Man()
print(man.eat())

3、总结

这一节我们提到了几个我在前端没见到的几个概念,协议、guard、optional、解包、if let...总结的还是比较浅,大家可以一起讨论,补充说明,下一节我们来说几个和JS中相似的东西。