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毫秒