LPC语言学习
2007/5/5 23:26:31
LPC就是我们用来写MUD的语言啦,它的语法和C 基本一样。
它独特之处在于有简单的 OOP特性(简单但很有用:PP),
还有一个C里面没有的HASH表的类型:MAPPING LPC和C还有一个不同是
其主函数是CREATE()而不是MAIN()。create()别写错哦:PP LPC里面主要的
(也是写MUD所足够的)数据类型有int,string,mapping,object, mixed。
下面主要讲一下这些类型了。
因为整数类型对于写MUD已经足够,所以不用FLOAT了。同样的,
因为我们的 汉字是双字节的,所以CHAR类型其实也没用,只需要STRING 类型就可以了。
STRING的定义,这里要提一下:string常量的赋值,
假如是常量的话可以只用 “连接”的办法代替string,例如: string str = "我" "们" ;
那么结果是str == "我们" 同样的str = "我" "们";也是一样,
空格与换行在LPC编译时是被忽略的,所以我们 写MUD的时侯不仿多些TAB和换行,
这样程序容易看些。 当然,除了直接连接之外还可以用 + 连接。
在有变量的时侯就要用了。
例如: string str0 = "我们"; string str1 = "和"+str0+"大家";
结果是str1 == "和我们大家" mixed是一个比较特别的类型。
mixed 类型的变量可以赋任何其他类型的值。 这在未知变量类型的时侯非常有用。
不过一般情况下很少会用到mixed。 LPC里面没有“指针”的概念。
在变量名前面加 * 的定义表示数组。如int *a 表示a 是整数数组。
一般来说我们定义数组时是未知其大小的。所以定义时不用象 C 那样给定大小。
数组和MAPPING有些类似,所以将在下面和MAPPING一起讲它们 的操作。
LPC里面没有“指针”的概念。在变量名前面加 * 的定义表示数组。
如int *a 表示a 是整数数组。一般来说我们定义数组时是未知其大小的。
所以定义时不用象 C 那样给定大小。数组和MAPPING有些类似,
所以将在下面和MAPPING一起讲它们 的操作。 object, 是OOP概念了,
在LPC里面好象有CREATE()的都可以做object 类型变量 了。
object 我们称为“对象”,在MUD里就是一件物品,
一个房间或任何一个“具 体”的东西,都是OBJECT。“对象”,
在OOP中是一些数据与基于这些数据的函数的 集合(好象文诌诌的? :PP)
嗯,object 中的数据一般不能直接操作(至少在LPC 里面不能的 :PP),
所以对object的操作只有赋值(对object类型的赋直 )和执行 object的函数
( private函数不能被外部调用 )。
函数调用格式: eg. object ob; ob->test(1,2);
基本格式: object类型变量名->函数名(函数参数列);
其中若该object 中未定义该函数名的函数则返回 0 值
(呵呵,不会有出错信息的哦, 所以千万别写错名字了)。
写了这么多终于写到LPC 最有特色的两个类型了,mapping和数组。
mapping和数组在“外观”上有些类似,所以在一起写了。前面提到过:
mapping是 散列表,具体如何这里不详述了,只希望大家一定要记住mapping的格式!!
( 实际 上这格式只在给变量赋初值时用到 )mapping
格式如下: eg. mapping a = ([ "ab" : 1 , "cd": 2 , ])
标准格式: mapping 变量名 = ([ key1 : value1 , key2 : value2 ,
.......... .......... ]);
其中key可以是除了int以外的任何值!! (好象char也不行吧 :P ),
包括任何数组 甚至mapping也可以做key ,而value则可以是任意所有值。
mapping的应用在于: 可以用key来index得到相应的value值。
如上面eg的,我们有:a["cd"] == 2,.... 因为要用key来index的关系,
在mapping中key值不能相等,若相等则覆盖掉原来该 key对应的value。
写的有些乱了,SORRY :P 那么一个mapping怎么改变它的值呢?
有两个方法(下面设mapping map )。 1. map[key] = value; 2.
map += ([key : value ]); 请大家留意第二种赋值方法,
它跟我们将要提到的数组
下一页
返回列表
返回首页
©2025 MUD游戏网_文字mud 电脑版
Powered by iwms