Swift 中 ‘=’ 赋值符号的返回值

1. 普通赋值符的返回值

value的类型为()

如上图,普通赋值的返回值属于Void类型

2. 赋值符号在Optional Chain中的返回值

class SomeClass {
    var className:String?
}

let aClass:SomeClass? = SomeClass()
let anotherString = "anotherString"

if ( (aClass?.className = anotherString ) != nil) {
    print("赋值成功")
}else {
    print("赋值失败")
}

如果是给Optional Chain中的属性赋值,则返回值的类型为 Void?
返回值可能是Void,此时不等于nil,即赋值成功;或等于nil,即赋值失败

3. Void和空tuple的区别:

作为类型表示时,Void与()一致,表示‘空’类型。()也可以作为空tuple,表示 ‘a special value of type Void’

//没有编译错误和警告
let value:() = (name = aString)
let emptyTuple:() = ()
**但是空类型无法用==比较**

实际上无返回值的函数其实返回一个空tuple。官方文档:

NOTE
Strictly speaking, the sayGoodbye(_:) function does still return a value, even though no return value is defined. Functions without a defined return type return a special value of type Void. This is simply an empty tuple, in effect a tuple with zero elements, which can be written as ().

Reference:The Swift Programming Language (Swift 2.2)

//没有编译错误和警告
func someFunc() {
    return ()
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容