加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift赋值语句的返回值

发布时间:2020-12-14 06:57:33 所属栏目:百科 来源:网络整理
导读:在C语言中赋值语句的返回值就是值本身..比如可以用int a = b = 2;将a和b同时赋值为2. swift的赋值语句也会有返回值,它的返回值一般是一个Void即() 比如下面的var c: Void,这里变量c的类型就是void 其中: Void可以省略(因为可以自动推导出来) var b: Intvar c

在C语言中赋值语句的返回值就是值本身..比如可以用int a = b = 2;将a和b同时赋值为2.
swift的赋值语句也会有返回值,它的返回值一般是一个Void即()
比如下面的var c: Void,这里变量c的类型就是void 其中: Void可以省略(因为可以自动推导出来)

var b: Int
var c: Void = (b = 1) // ()
c.dynamicType // ().Type
print(c) //"()n"

但是,当=左边有optional unwrapping (形如a?.b )的时候,赋值语句返回的是一个Void? 即 ()?
这是因为optional unwrapping可能unwrap失败,此时赋值不会发生.
所以赋值语句会在赋值成功的时候返回Void,在赋值失败的时候返回nil代码如下:

class Person {
    var name: String?
}

var p: Person?// = Person(); //nil

//赋值语句返回的是一个Void? 即  ()?
//这里result的值当p为nil的时候为nil,当p有值(赋值成功)的时候返回Optional<()>
var result: ()? = (p?.name = "cyper") // nil
result.dynamicType  // Optional<()>.Type

if let result = result {
    print(result,p!.name!)
} else {
    print("name not assigned") //"name not assignedn"
}

注:
1.Void其实是()的typealias,它们是完全等价的. 而()是一个空的tuple,没有返回值的函数返回的就是一个空的tuple.
2. 此关系式成立: Void? === ()? === Optional<Void> === Optional<()>

参考 iOS 9 programming Fundamentals with Swift chapter 3.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读