Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 什么是.self,在用于?斯威夫特3_Swift_Class_Self - Fatal编程技术网

Swift 什么是.self,在用于?斯威夫特3

Swift 什么是.self,在用于?斯威夫特3,swift,class,self,Swift,Class,Self,我最近注意到一些代码会初始化实例,比如ClassName.self(),例如: let realm = try! Realm.self() 从输出和之后的使用情况来看,这就像没有它一样-Realm() 使用.self进行init有什么具体的原因或用法吗?这有点猜测,但我相信在Realm的上下文中使用Type.self()的地方遵循了一种错误的约定,这种约定遵循了(一些不相关的)Swift团队解决bug的效果 Realm团队的以下承诺是为上述bug的预期解决做准备的: 上述提交中的更

我最近注意到一些代码会初始化实例,比如ClassName.self(),例如:

let realm = try! Realm.self()
从输出和之后的使用情况来看,这就像没有它一样-Realm()


使用.self进行init有什么具体的原因或用法吗?

这有点猜测,但我相信在Realm的上下文中使用
Type.self()
的地方遵循了一种错误的约定,这种约定遵循了(一些不相关的)Swift团队解决bug的效果

Realm团队的以下承诺是为上述bug的预期解决做准备的:


上述提交中的更改(在适当的上下文中,
Type
更新为
Type.self
)可能激发了代码库,这些代码库利用Realm在初始化器上下文中也利用
Type.self
,即
Type.self()。然而,这是对
.self
后缀的重复使用。

您是否有这样使用
self()
的参考?在上,我只能看到
let realm=try!Realm()!所以我不明白为什么在声明期间需要.self。所以这就像在使用类拥有的参数时添加self一样-例如self.frame。没有错,但没有做任何事情?@BenOng在这种情况下,有时我们需要使用
self
后缀,例如,帮助编译器区分类拥有的参数和相同命名的局部参数(通常用于初始值设定项,
self.foo=foo
)。但是是的,在你描述的上下文中使用
self
是多余的,我看不出有什么理由这样做;类似的情况可能是使用
Realm.init()
而不是
Realm()
.init
确实有它的用途,但在某些情况下也是多余的)。非常感谢您的快速回答!我会接受这个,直到我找到另一个使用的理由。self@BenOng很乐意帮忙。