2016-11-24 19 views
1

當我寫var x = 0如何的整數存儲文字(例如無功X = 0)

我知道x是具有屬性和方法(從int結構創建的)的對象。

x在哪裏以及如何存儲0?

0是否存儲爲屬性的x?

如果是,那麼該屬性的類型是什麼?

如果不是,它存儲在哪裏?

+0

'Int'符合['IntegerLiteralConvertible'](http://nshipster.com/swift-literal-convertible/ ),因此編譯器知道如何將一個固定值(如0)轉換爲一個Int結構體 –

回答

0

x嚴格來說不是一個對象。 「對象」是我們給實例的一個名稱,而不是結構的名稱。 xInt結構的實例

Int結構包裝一個Builtin整數類型,並定義了一堆方法,你可以調用它。內置的整數文字類型不能從Swift訪問(也沒有理由)。像所有結構一樣,Int的實例存儲在運行時堆棧中。例如,它們不是堆中的對象,例如Java中的Integer。你可以看到implementation details of (U)Int(8/16/32/64) here。該文件使用由Swift團隊創建的Generate Your Boilerplate(GYB)預處理器從.swift.gyb模板文件生成.swift文件。 在line 221,你可以看到Builtin.${BuiltinName}類型的屬性_value。該預處理器GYB擴展了這一點,以便具有IntBuiltin.Int類型的_valueInt64具有Built.Int64

+0

IIRC實際上'value'屬性曾經是公共的。我不記得他們什麼時候把它藏起來。 – matt

+0

@matt你想要什麼? – Alexander

+0

你不會的,這就是他們把它藏起來的原因。但這意味着OP的問題的答案顯而易見。 – matt

相關問題