Swift的基本知识(三)

在swift中,可选类型的根源其实是一个枚举类型,里面有some和none两种类型。其实就是所谓的nil就是optional.some,非nil就是optional.some。然后会通过some(T)
包装(wrap)原始值,对其进行拆包的过程。这里对enum optional的定义:
  enum Optional : LogicValue, Reflectable {
        case None
        case Some(T)
        init()
        init(_ some: T)
        
        /// Allow use in a Boolean context.
        func getLogicValue() -> Bool
        
        /// Haskell's fmap, which was mis-named
        func map(f: (T) -> U) -> U?
        func getMirror() -> Mirror  
    }
语法使用“?”操作符及“!”
 var optionParama : String? = "abc"
        optionParama = "ABC"
        //非空取默认值“abc”
        print(optionParama ?? "abc")
        optionParama = nil
        print(optionParama ?? "abc")
        //定义的可以为空,编译时会报警告,但是运行不会出错
        print(optionParama)
        
        var someParama : String! = "SDF"
        someParama = "sdf"
        print(someParama)
        //如果定义为非空的类型,如果在赋值为空,就会崩溃,但是编译不会报错
//        someParama = nil
//        print(someParama)
输出:
ABC
abc
nil
pdf

总结:在使用可选类型和隐式可选类型的时候,一定要明确使用的场景,看定义的属性是否会出现值为空的情况。

你可能感兴趣的:(swift)