2 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
首先,Ruby 語言規(guī)范、Python 語言規(guī)范和 ECMAScript 語言規(guī)范都沒有規(guī)定數(shù)組(或在 Python 中稱為列表)的任何特定實(shí)現(xiàn)策略。每個(gè)實(shí)施者都可以自由地按照自己的意愿實(shí)施它們。
其次,把它們放在一起沒有多大意義。例如,在 ECMAScript 中,數(shù)組實(shí)際上只是具有數(shù)字屬性的對(duì)象,而實(shí)際上,這些數(shù)字屬性甚至不是真正的數(shù)字,它們是字符串。
第三,它們并不真正存儲(chǔ)多種數(shù)據(jù)類型。例如,Ruby 只有一種數(shù)據(jù)類型:對(duì)象。由于一切都是對(duì)象,一切都具有相同的類型,因此將對(duì)象存儲(chǔ)在數(shù)組中沒有問題。
第四,至少 Ruby 語言規(guī)范實(shí)際上并沒有保證數(shù)組訪問的復(fù)雜度是 O(1)。不提供 O(1) 訪問權(quán)限的 Ruby 實(shí)現(xiàn)很可能會(huì)被社區(qū)拒絕,但它不會(huì)違反任何規(guī)范。
當(dāng)然,現(xiàn)在任何實(shí)施者都可以隨心所欲地發(fā)揮自己的聰明才智。例如,V8 檢測(cè)數(shù)組的所有值何時(shí)都是數(shù)字,然后以不同的方式存儲(chǔ)該數(shù)組。但這是 V8 的私有內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊
在內(nèi)存中,異構(gòu)數(shù)組是指針數(shù)組。每個(gè)數(shù)組元素都存儲(chǔ)數(shù)組中該位置項(xiàng)的內(nèi)存地址。
由于內(nèi)存地址的大小都相同,因此可以通過將數(shù)組索引乘以地址大小并將其與數(shù)組的基地址相加來找到每個(gè)地址的地址。
添加回答
舉報(bào)