当我写var x = 0
我知道x
是一个具有属性和方法的对象(从Int Structure创建)。
x在哪里以及如何存储0?
0是否存储为x?
的属性如果是,该属性的类型是什么?
如果没有,它存储在哪里?
答案 0 :(得分:0)
x
不是一个对象。 "对象"是我们为实例类提供的名称,不是结构。 x
是Int
结构的实例。
Int
结构包装Builtin
整数类型,并定义了一组可以调用它的方法。那个内置的整数文字类型是不能从Swift访问的(也没有理由)。与所有结构一样,Int
的实例存储在运行时堆栈中。例如,它们不是像Java中Integer
那样的堆上的对象。
您可以看到implementation details of (U)Int(8/16/32/64)
here。此文件使用Swift团队创建的Generate Your Boilerplate(GYB)预处理器从.swift
模板文件生成.swift.gyb
个文件。
在line 221,您可以看到_value
类型的属性Builtin.${BuiltinName}
。 GYB预处理器将其扩展为Int
_value
类型为Builtin.Int
,Int64
为Built.Int64
等。