每個對象都有一個變量可以與之相關的參考,是正確的?Lua中對象的「引用」是什麼樣的?
這些引用是什麼樣子的?當你打印時(table1)是什麼?
0x100108fb0例如?
如果是這樣,是否有一個函數可以顯示更原始類型的參考,如字符串和數字?
每個對象都有一個變量可以與之相關的參考,是正確的?Lua中對象的「引用」是什麼樣的?
這些引用是什麼樣子的?當你打印時(table1)是什麼?
0x100108fb0例如?
如果是這樣,是否有一個函數可以顯示更原始類型的參考,如字符串和數字?
不要混淆對象,引用和變量。
表,函數,線程和(全)用戶數據的值是對象:變量實際上不包含這些值,只對它們的引用。
因此,如果變量的值是nil
或數字類型,變量實際上包含它,而不是僅引用它。沒有涉及這種類型的參考。我不知道爲什麼字符串在參考手冊的上述引用中被遺漏;也許是因爲字符串是不可變的,對於Lua程序員來說,變量是否包含字符串引用或值是沒有區別的。然而,從技術角度來說 - 從C的角度來看 - 字符串是從變量引用的,而不是被包含的。
引用只是一個指針,指向對象在內存中的地址。當打印爲十六進制數字時,它看起來像0x100108fb0
。
如果是這樣,有沒有可以顯示的更原始的類型,如字符串和數字的引用的功能?
對於後者,正如我寫的,根本沒有任何參考。對於字符串,無法在簡單的Lua中打印地址,但無論如何您都不需要知道。
您可能還想閱讀Programming in Lua參考手冊的相應部分。
每個對象都有一個變量可以與之相關的引用,是正確的嗎?
編號Lua將值標記爲標記的聯合(類型,值)。對於代表number
,bool
或nil
的變量,該值直接存儲在聯合中。對於string
,table
,function
,userdata
和thread
,該值是一個指針(引用),或與該對象頭部的內存位置相關的一組指針。
這些引用是什麼樣子的?
正如Oberon所說,參考指向內存中的一個點,以十六進制表示時,它看起來像0x0 ..
如果是這樣,有沒有可以顯示的更原始的類型,如字符串和數字的引用的功能?
number
,bool
或nil
,沒有任何參考。對於字符串,在Lua中沒有標準的方式來打印他們的地址。對於table
,function
和thread
,您可以使用print()。不確定用戶數據,這可能需要自己定義。
這些類型的許多實現細節在this article中以簡明語言覆蓋。
我試着將這些改進添加到Oberon的答案中,但是我的編輯未被批准。 – 2013-03-04 05:42:08