博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
swift赋值语句的返回值
阅读量:7021 次
发布时间:2019-06-28

本文共 967 字,大约阅读时间需要 3 分钟。

hot3.png

在C语言中赋值语句的返回值就是值本身..比如可以用int a = b = 2;将a和b同时赋值为2.

swift的赋值语句也会有返回值, 它的返回值一般是一个Void即()
 比如下面的var c: Void, 这里变量c的类型就是void 其中: Void可以省略(因为可以自动推导出来)

var b: Intvar c: Void = (b = 1) // ()c.dynamicType // ().Typeprint(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") // nilresult.dynamicType  // Optional<()>.Typeif let result = result {    print(result, p!.name!)} else {    print("name not assigned") //"name not assigned\n"}

注:

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

参考 iOS 9 programming Fundamentals with Swift chapter 3.

转载于:https://my.oschina.net/uniquejava/blog/682067

你可能感兴趣的文章
python--gevent协程及协程概念
查看>>
Java 打包成exe安装包
查看>>
EF执行出错~NotSupportedException
查看>>
A.出题人的RP值
查看>>
jQuery中$().each与$.each的区别
查看>>
大数据开发从入门小白到删库跑路(一)- 获取Hadoop
查看>>
ES6新特性概览
查看>>
[转] React Hot Loader 3 beta 升级指南
查看>>
slice,substr和substring的区别
查看>>
迭代器、生成器、面向过程编程
查看>>
使用async实现异步控制
查看>>
第一次实训作业
查看>>
Hash
查看>>
nginx 配置手机端PC端访问不同的项目
查看>>
SpriteKit-(SKNode)
查看>>
并发编程可能存在的问题
查看>>
c++ 不太懂得地方
查看>>
前端面试问题整理 第一部分
查看>>
挖一口自己的井
查看>>
[Dart] Flutter 上传文件
查看>>