精華區beta Programming 關於我們 聯絡資訊
※ 引述《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