找回密码
 注册
搜索
查看: 1995|回复: 0

LPC语言学习 3

[复制链接]
门派:不明
发表于 2008-6-24 15:13:26 | 显示全部楼层 |阅读模式
数组:
即ARRAY,前面说过,LPC中的数组只要在类型后面加 * 就可以了
一般来说数组不用预先定大小
但若有需要可以用allocate(size)来固定大小。如:a = allocate(10);
在固定了SIZE之后好处是可以任意用下标定位来对数组元素操作。

我的习惯是不用固定SIZE的数组,因为那样更自由些。数组的操作在LPC里是相当强的。
最常见的是 +, - 操作,也是最useful的。
+就是通常的“连接”操作,
-是集合的“差”操作,如果没有这两个概念请看下面例子:
a == ({ 1,2,2,3, })
则a + ({2,3,4}) == ({ 1,2,2,3,2,3,4})
a - ({ 2,1}) == ({3})

请注意 - 的时候会把所有相同的元素都消掉的。

结合上面例子可以知道ARRAY常量的表示方法了,就是 ({元素,元素,....})
当然这只是一维数组(事实上我们用一维数组就足够了,我想)
在对数组的元素改变的时候,一般可以用直接赋值,如a[3] = 2;
在对数组的元素改变的时候,一般可以用直接赋值,如a[3] = 2;
如何删除一个元素?假如你确定该元素的值唯一的话可以用 - ({元素值 })
但要是有同值元素的话就会把它也删掉了,那不是我们所要的。
一般常用的方法是把该元素赋一个“不可能值”,或者说“无用值”,
然后再用 - 把该元素删除掉,比如说
我们确定数组内所有元素都为正,则我们可把那个元素赋值为0然后把数组 -= ({0})

关于array的一个很有用的函数是member_array
用法是 member_array(元素值,数组,起始下标(可选) );
函数返回数组中从下标开始第一个元素值为所搜索值的元素下标。若无则返回-1;
嗯,LPC的数组是跟C一样的,下标从0开始到size-1 ,请注意。
member_array的参数中起始下标一般可缺省。
eg: a = ({1,2,2,3})
则      member_array(2,a) == 1
        member_array(2,a,2) == 2
        member_array(4,a) == -1


ARRAY和MAPPING可以说是LPC里面最有用和最直接用的结构了。
再加上两个功能强大的函数:filter_array 和filter_mapping。
我们有了filter就可以实现对ARRAY,MAPPING里各元素的过滤操作。
这样一来我们就可以实现数据库的操作了,这样我们的LPC程序所拥有的功能
是非常强大了。

最后说一下多维数组的定义方法。
多维数组一般各维SIZE固定的,有两种方法定义:
eg1:
定义多维数组变量
   a = allocate(10);
   a[0] = allocate(10);
   a[1] = allocate(10);
   ...etc...
也就定义了a [10][10]

eg2:
用mixed 类型 = 多维数组常量
   mixed a;
   a = ({ ({ 1, 2, 3 }), ({ 1, 2, 3 }) });
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|书剑永恒MUD ( 闽ICP备14012032号|闽公网安备 35050202000162号 )

GMT+8, 2025-5-1 08:38 , Processed in 0.025252 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表