最新发布
self vs Self
学习 swift
语言过程中,会不断发现 swift
一些匪夷所思的语法。学过之后,常常反问一句,真的有必要吗?
没学之前,谁会想到 self
和 Self
是不同的。
关键字 self
场景 1 前置 self.
前置 self.
是最常使用的场景,此时关键字 self
同其他语言的 this
关键字类似,可以代表编码过程中当前代码运行所属实例。
class Foo {
private var name: String = ""
init(_ name: String) {
self.name = name //属性名与参数名发生歧义,通过 self. 进行明确指定
}
func show() {
print("name = \(name)") //没有歧义时,直接使用属性名即可
}
}
需要注意的是,前置 self.
代表的是当前类型的实例对象。在类型定义中,如果前置 self.
出现在内嵌类型或匿名函数时,要注意其所指。这点和 es6 简明教程 - 令人崩溃的 this 有些类似。
在 es6 中, 关键字 this, 与函数、对象、类无关,只与执行期上下文有关.
extension Foo {
//增加一个计算属性 通过匿名函数进行赋值,内部访问 前置 self. 属性
var age: Int = {
//print(self.name) //在 swift 5.7 中会直接提示错误 无法找到 self 对象
return 25
}()
}
在 swift 5.7 中会直接提示错误 无法找到 self 对象。
场景 2 后置 .self
... 阅读全文
目录导航
-
+ 编程
-
+ 苹果开发 (1)
-
+ 视图篇
-
+ 存储篇
-
+ 网络篇
-
+ swift (3)
- 2023/03/12 self vs Self
- 2023/03/09 单件的实现与配置
- 2023/03/11 复杂枚举类型的 Equatable 协议实现
- 2023/03/05 精选苹果开发资源
-
+ 视图篇
-
+ Go 编程 (11)
- + X-MOD
-
+ Go Mobile 调研 (3)
- 2019/07/06 GoMobile 3: 在 iOS & Android 上的集成
- 2019/07/04 GoMobile 2: Android 环境准备
- 2019/07/02 GoMobile 1: iOS 环境准备
- 2023/01/12 Go 私有包环境配置
- 2023/01/12 Go SQLite3 & SQLCipher 集成
- 2022/05/28 Go Workspace 快简教程
- 2019/07/16 Go 隐晦操作符
- 2019/07/11 Go 图解反射
- 2019/07/08 Go 注释详解
- 2019/07/07 Go 交叉编译 vs 条件编译
- 2019/06/28 Go 管道程序
- 2019/06/26 Go 程序发布
- 2019/06/17 Go 代码审查
- 2019/03/06 Go Module 基础原理
-
+ Docker (2)
- 2019/08/13 基础镜像与多阶段构建
- 2019/06/17 镜像原理与最小化构建
-
+ 安装x运维 (2)
- 2020/03/09 MariaDB 系统安装配置
- 2019/08/09 Postfix 邮件系统搭建
-
+ Electron
-
+ Kubernetes (1)
- 2023/03/02 helm 简明实用指南
-
+ GCloud
-
+ BigQuery (2)
- 2022/05/23 常用查询: 日活、日增、次留,各类排行榜
- 2022/05/21 UNNEST 辅助查询
-
+ BigQuery (2)
-
+ 阿里云 (1)
- 2022/08/15 网络插件 terway 切换故障
-
+ 建站
-
+ zola (1)
- 2022/05/19 最新发布页的实现
-
+ zola (1)
-
+ 快简教程 (4)
- 2021/07/20 快速简明教程: webpack
- 2021/06/21 快速简明教程: es6
- 2020/06/17 快速简明教程: sass
- 2020/06/14 快速简明教程: css
-
+ 苹果开发 (1)
-
+ 留言
-
+ 关于