※ 引述《tinlans.bbs@whshs.cs.nccu.edu.tw (汀)》之銘言:
> 聽到它是 LPC 演變過來的讓我很有興趣,
> 稍微看了一下,mixed 跟 mapping 還是存在,
> 不過我有幾個比較好奇的地方,
> 沒辦法馬上從它的 doc 看出來,
> 想請教一下。
> 1. Pike 是不是跟 LPC 一樣有一個常駐的 VM,
> 所有的 objects 會像是 processes 一樣常駐於 VM 內部?
> 是否每個程式檔被編譯載入後即是一個物件?
這個我不曉得。
> 2. call_other operator 是否還存在於 Pike 中?
> 譬如寫 x->foo(a, b, c); 可以呼叫物件 x 中的 foo() 函式,
> 若 foo() 有三個參數 a、b、c,我寫 x->foo(a, b);,
> 是不是 c 可以自動被視為 undefined value?
剛剛試了一下,好像不行,會出現 too few argument.
> 3. 是否還有任意物件之間互相 shadow 的功能?
> 譬如 a 物件內部定義有 foo() 函式,
> 現在我臨時造出 b 物件(由跟 a 完全不相干的程式檔產生),
> 裡面也有一個 foo() 函式,
> 然後我讓 b 物件 shadow a 物件,
> 往後任何 a->foo() 這種呼叫均等同於 b->foo()?
> (LPC 時代沒有 class 的概念,所以都用物件這個名詞)
> 另外是不是也有 nomask 這種保留字可以防止 shadow?
應該不行的樣子,沒有看到相關的說明。
> 4. 是否還有 this_object()、function owner 和 bind 的觀念?
> (1) 譬如目前程式是在物件 a 中執行,this_object() 會傳回 a。
這個有
> (2) 由物件 a 中擷取出來的 function pointer,其 owner 為 a。
> (3) 若物件 a 中定義有 foo() 這個函式,以 (: foo :) 獲得其指標,
> 是否能利用 f = bind((: foo :), b); 使 f 的 owner 被 bind 為 b?
> 此後執行 (*f)(a, b, c); 形同在 b 中執行 foo() 函式?
> (同時 f 指向的 foo() 函式中所有 this_object() 呼叫均傳回 b)
> 5. 是否還存在 virtual object 的用法?
> 以往 LPC 必須使用實際存在的程式檔產生物件,
> 但是 LPC 的 VM 有一個機制能在找不到該檔案時呼叫一個 master applies,
> 由該 master applies 依據檔名等資訊 clone 出適當的物件傳回,
> 而該物件會在之後視為由該不存在的程式檔所產生的。
上面幾個不曉得。
> 6. 是不是還有 save_object() 這種函式,
> 可以將所有 nosave/non-static global variable 以 text form 存入檔案,
> 之後直接用 restore_object() 讀出以恢復物件狀態?
這個沒看到,函式列表裡也沒找到。
> 不好意思問這麼多問題,
> 因為這些都是目前我還會使用 LPC 的理由,
> 但是他們官方網頁沒有跟 LPC 的比較表。
> 我問的東西可能跟 LPC4 有差距,
> 因為我熟悉的是 LPC3 時代 branch 出去的 MudOS LPC。
--
~ 白馬帶著她一步步地回到中原。白馬已經老了,只能慢慢地走,
'v' Brian Hsu 但終是能回到中原的。江南有楊柳、桃花,有燕子、金魚……
// \\ ( 墳 墓 )
/( )\ 但這個美麗的姑娘就像古高昌國人那樣固執。 【白馬嘯西風】
^`~'^
http://bone.twbbs.org 『那都是很好很好的,可我偏不喜歡。』
--
※ Origin: SayYA 資訊站 <bbs.sayya.org>
◆ From: 219-68-170-224.adsl.dynamic.giga.net.tw