gpt4 book ai didi

swift - Swift dynamicType 返回什么?

转载 作者:搜寻专家 更新时间:2023-11-01 07:22:25 26 4
gpt4 key购买 nike

考虑下面的例子:

enter image description here

class P {}
class C: P {}
let i: P = C()

let iDT = i.dynamicType
let CS = C.self

iDT == CS
iDT === CS

iDT.dynamicType == CS.dynamicType

iDT.dynamicType
CS.dynamicType

问题是:为什么iDT.dynamicType P.Type.Type?我希望它是 C.Type.Type

最佳答案

这样会更简单:

class A {}
class B:A {}
let i: A = B()
i.dynamicType
i.dynamicType.dynamicType

所以我们可以推断出 i.dynamicTypei 真正的类型(多态),但是 i.dynamicType.dynamicType 是type i 被键入为。请注意,它不是 A;它是 A.Type,一种元类型。 dynamicType.dynamicType 的概念是一种边缘情况,因此这大概是一个实现细节。

在 REPL 中做这一切很有趣:

  1> class A {}
2> class B:A {}
3> let i : A = B()
i: B = {
__lldb_expr_1.A = {}
}
4> i.dynamicType
$R0: A.Type = __lldb_expr_3.B
5> i.dynamicType.dynamicType
$R1: A.Type.Type = metatype for __lldb_expr_1.A

关于swift - Swift dynamicType 返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38113888/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com