LPC 語言基礎

LPC是一種基於C語言開發的編程語言編程

主要用於寫MUD(多使用着迷宮)遊戲數組


LPC是一種面向對象的語言,它有object的概念,可是沒有classapp

LPC有四中函數類型
1> apply 只能被遊戲主題(遊戲驅動)呼叫的函數
2> efun 外部函數,定義在遊戲主題中的函數
3> ifun 本地函數,MUDLIB中的object定義的函數
4> sefun 模擬外部函數,本質上是本地函數,多數是重寫了efun(是遊戲的核心函數) 編程語言

LPC與C的差異
①LPC沒有指針,沒有結構
②存在新的數據類型:對象,映射
③字符串類型存在必定的差別函數

LPC的Object沒有明顯的開始和結束標誌
LPC是編寫「Object」,即LPC程序是由一個或多個「Object」組成,在外部先將代碼
用Load_Object(object_name)將代碼載入內存oop

 

1 eg:ob = Load_object(sort.c)
2 ob->fun1();       // sort.c 中的Public函數 fun1
3 ob->fun2();    // sort.c 中的Public函數 fun2

 

在Object中 fun一、fun2 要事先聲明 而後再定義0lua


在Object中 變量是私有的,須要經過函數操做
函數可私有、可共有
變量是Object的一種屬性,函數則是對屬性的一系列操做spa

 

LPC的數據類型(與C相比):指針

1> 浮點型與整形相加
先向寬字節的變量類型對齊,而後運算
最終結果轉換爲運算符左邊的類型code

 

2> 字符串類型 string
①可用下標 string str_eg = "abcdefg" 則str_eg[1] = "b";
②string相加 str1 = "咱們" str2 = "和" + str1 + "你們";
或用 str1 = sprintf("和%s你們", str0);
③line[0..0]和line[0]的區別,linep[0..0]返回的是整個字符串

 

3> mapping 映射
①mapping a = ( ["ab" = 1], ["cd" = 2])(鍵值對)
②映射變量存儲的是映射的地址、將映射a賦值給映射b: mapping b = a;
此時對b進行操做、a也會改變
③添加 直接加 map[kay] = Value; (會覆蓋原有值)
使用 += : map += ([key : value]);
④ 遍歷 * array key_arr = keys(map) // 取得map的全部鍵值,返回鍵值的數組

1 mixed value_temp ;
2 for(int i = 0; i<sizeof(key_arr); i++)
3 {
4 value_temp = map[key_arr[i]];
5 }

 


*(這種相似於lua的 x in pairs(map)).


 1 loop(member in map); .


此時member包含{key, value, no}(鍵, 值, 在mapping中的序號)

4> mixed (混合類型) // 相似於C++11 中的auto
* 用於函數的返回值 :private mixed mixed text();
* 用於函數參數:private mixed text(mixed a);
* 不肯定函數參數的個數、類型時 參數能夠寫成(...):
private mixed text(...)


5> 指定類型 var_type
其餘類型 + ? : string?
做爲函數返回值:
string? append_suffix (string? str)
此時這個類型能夠是string類型 同時也能夠是UNDEFINE(空類型)

 

6> array (數組)
① array({ 元素1, 元素2, ... })
元素能夠任何類型,不用事先規定大小
② allocate_arry(size, x) 直接規定了數組的大小和數組內元素的初值
③ + a += ({4}) 右邊數組的元素 + 到左邊,位置在最後
④ - a -= ({2}) 從數組a中扣除右邊數組包含的元素(全部值爲2的元素)
⑤ "&" 與操做
看第一個集合中的每個元素,是否在第二個中出現過,因此結果與兩個操做幾個的前後順序有關

1 eg: s1 = {123}     //    此時     s1 & s2 爲 {1}
2 s2 = {111}          //               s2 & s1 爲 {1, 1, 1}        

 


⑥ mapping_array 函數
mapping_array (src, function fun)
mapping_array (src, ( :fun1: ));
將數組中的元素,一個一個做爲函數的參數,做用後的結果放入新的數組中傳出,數組做爲函數的最後一個參數


LPC的運算符

* ".." 表示範圍, "<:" 表示倒數 a[0..5]表示取數組的第0個到第5個構成的新數組 1> 左邊 小於0,右邊大於長度 則返回整個數組 2> 左邊大於右邊,返回 a[x..<y] 表示取數組的第x個數到數組的倒數第y個 數結束 因此 y最小爲1<< 左移 >> 右移 3 << 4 表示把3 轉爲2進制,左移4位, 再轉爲十進制 得出48     3 * 4^2

相關文章
相關標籤/搜索