Mud 版 (精华区)
发信人: jiayb (多情剑客痴情剑), 信区: Mud
标 题: lpc讲座(3)
发信站: 哈工大紫丁香 (Wed Apr 1 18:01:36 1998), 转信
发信人: mice (风中的云), 信区: MUD
标 题: lpc讲座(3)
发信站: 冰城驿站之BBS (Fri Feb 27 20:52:16 1998), 转信
第二章 Lpc的数据类型。
第一节 序言
? Lpc的Object是由零个或更多一些的被一个或一个以上函数操纵
控制的变量组成的。在代码中函数排列的顺序是不影响Object的特
性,但是影响代码的可读性。当你写的那个Object被第一次调用时,
Driver将你写的代码装入内存。当每一个Object被调入内存时,所
有的变量是没有值的。create()这个函数被调用来初始化Object的
值。create()这个函数在Object装入内存后立即被调用。在你读本
文时可能对编程一无所知,你可能不知道什么是函数以及它是怎么
调用的;或许你有了一些编程的经验,你可能对一个新创建的Object
的函数相互调用过程是怎样开始感到迷惑。在这些困惑得到解决之
前,你更有必要了解的是这些函数操纵控制的到底是什么东西。所
以你最好先来读读这一章:Lpc的数据类型。可以这么说,几乎90%
的错误(包括丢失{}和())是由于错误的使用Lpc的数据类型。我认
为真正理解这一章能帮助你更容易的编程。
??????????????????? 第二节 让计算机理解你
2.1 计算机语言
? 众所周知的计算机懂得的语言实际上由“0”和“1”组成的机器
码。计算机根本不懂得人类的自然语言,实际上它也不懂得我们使
用的高级语言,比如BASIC,C,C++,Pascal等等。这些高级语言
能让我们更容易的实现我们的想法。但是这些高级语言最终都要被
翻译成“0”和“1”组成的计算机语言。
? 有两种方法能把高级语言翻译成计算机语言:编译和解释。编译
类的在程序写完之后用一个编译器将其翻译成计算机语言。编译在
程序执行之前就完成了。解释类的翻译的过程在程序执行时进行。
由于解释类的语言程序是边执行边解释,所以一般都要比编译编译
执行的慢。
? 不管是哪种语言,他们最终都要被翻译成0和1。但是变量,那些
你存在内存里面的变量,却不可能只是0和1。
所以你必须有一种你
使用的那种编程语言里面的方法来告诉计算机这些0和1应该被当做
整数还是字符,或者是字符串,或者别的什么东西。这样就必须使
用到数据类型。
2.2 数据类型
? 一个简单的例子:你现在有了一个变量,你把它叫做‘x
’并且
赋予它一个十进制整数值65。在Lpc你可以这样的语句来做这件事:
------
x = 65;
------
接着你可以做象下面这样的事:
-----
write(x + "\n");
y = x + 5;
-----
第一行把65和字母"a"输出到屏幕上
第二行把70这个值赋于变量y
对计算机来说有个问题:它不知道你所说的 x = 65;中的65什么意思.
你认为是65,但是计算机可能认为是:
00000000000000000000000001000001
但是,对计算机来说,字母'A'也是被当做:
00000000000000000000000001000001
所以,当你想让计算机明白 write( x + "\n" );, 它
必须有一种方法
知道你想看到的是65而不是'A'.
? 计算机就是通过数据类型来区分65和'A'. 一种数据类型简单的说就
是在内存的某处, 那里代表了或者说指向某个给定的变量, 这些内存
储存的数据是什么类型的. 每个LPC的变量都必须有它对应的变量类型.
在上面给的例子, 本应在那些代码之前有下面一行:
-----
int x;
----
这一行告诉Driver x应该指向什么类型的值, 它应该被当做数据类型'int'
来使用. 'int' 是一个32位的整数. 到这里, 你应该有数据类型的基本
印象, 以及为什么必须有数据类型. 他们可以让Driver知道计算机存在
内存里面的'0'和'1'到底是什么东西.
2.3 Lpc的数据类型
? 所有的LpMud的Driver都会有以下的数据类型:
void, int, string, object, mixed, int *, string *,
object *, mixed *
? 大多数的Driver都会有下面这些重要的数据类型:
float, mapping, float *, mapping *
? 有一些Driver同时还支持下面这些数据类型:
function, struct, class, char
? 特别的有MudOS支持的数据类型:(以v22pre8为例)
void, int, string, object, float, mapping, function,
class, mixed, int *, string *, object *, float *,
mapping *, function *, class *, mixed *
--
※ 修改:.yangx 于 Apr 1 17:44:38 修改本文.[FROM: 202.97.228.245]
※ 来源:.冰城驿站之BBS bbs.hr.hl.cn.[FROM: 202.118.226.90]
--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: yangx.bbs@bbs.hr.hl.]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.030毫秒