ruby049原始碼分析 array c

2021-09-27 18:50:14 字數 711 閱讀 2985

fary_entry(ary,offset)

是取陣列ary[offset]的值,作者需要判斷下標是否在區間[0,ary.length-1]區間內,如果offset是負數,就把offset加上長度,這樣實現

a[-1]指向陣列最後乙個元素的功能。

因為-1+a.length==資料最後乙個元素的下標。

如果下標不是正常區間內,則返回nil,否則返回ary[offset]

ary_subseq(ary,beg,len)

這個函式很有意思,用乙個臨時陣列,把從ary中取出的子陣列放到臨時陣列中,再把臨時陣列返回。

fary_each(ary)

這個函式的邏輯很有意思。

static value

fary_each(ary)

struct rarray *ary;

}else

}我當時的感覺就是這和ruby的寫法不是很象嗎。

如果要定義乙個帶塊的函式,如

def ok

yield

endok

我把這個先放下,留待以後再思考。

有很多函式都比較好理解。也有些不好更理解。其實,最後是讀最後那段話:

init_array()

這段告訴了我們,每個函式與ruby中array對客戶展示的函式相對應的東西,為此,先要在irb中,把這些函式弄明白。

再根據理解,有針對性的讀**。這樣就理解得更快些。

ruby 0 49原始碼分析

今天想想,讀讀ruby0.49的原始碼。用c寫東西,那是太慢了。真要幹活,還是用perl或者ruby.現在時間充足,就相看看ruby0.49。收到了王亞剛寫的gcc原始碼分析的書,他的版本太高,感覺還是讀最古老的版本較划算。量太大了,這何年何月才能看完呢。wget tar zxvf ruby 0.4...

ruby0 49原始碼分析 array c

ruby0.49原始碼分析 array.c 今天讀ruby0.49,感覺讀 的速度越來越快了。大腦好象開竅了。先讀makefile,根據基編譯順序,從下向上讀。在array.c的上面定義了若干函式,在末尾把函式進行註冊。檔案末尾 有init string 函式 用rb define method 函...

ruby0 49原始碼分析2

ruby0.49原始碼分析2 週末重新打造讀程式的環境。在臥室裡布置了兩台電腦,每台筆記本加個顯示器。一台專門用於讀 另一台,專門用於寫測試程式,並把上網功能去掉。最大限度的保持專注。因為ruby中定義了資料結構,把資料結構的定義抄下來,然後貼在牆面上,就象警察破案一下,準備乙個大的工作板。發現證據...