Mud 版 (精华区)

发信人: anderson (危峦快剑), 信区: Mud
标  题: LPC中文介绍(5)
发信站: 紫 丁 香 (Wed May 13 19:13:11 1998), 转信

Subject: Lpc的数据类型(1)(转寄) 
X-Forwarded-By: start (酒虫) 
X-Disclaimer: 天地创造 对本信内容恕不负责。 

发信人: maht (Trill), 信区: creator 
标 题: Lpc的数据类型(1) 
发信站: 天地创造 (Tue Oct 14 19:00:27 1997), 转信 


第二章 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 * 


(待续) 

--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: 202.118.226.67]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:7.484毫秒