                               LPC Basics
                     Written by Descartes of Borg
                            23 april 1993

			  Translated by Hanzo


			第二章  LPC 的资料种类

    现在, 你应该了解在 LPC 之中的物件 (objesct) 是由函式 (function)
  所组成. 而且那些函式放置的顺序是无所谓的. 游戏本身使用那些物件的方
  法是把那些物件档案读进记忆体, 需要用到时再呼叫 (call) 那些函式.
  如果你没有任何程式设计的经验, 你可以不知道函式是甚么, 或者什么叫做
  呼叫一个函式. 即使是有程式设计经验的人, 你也会对一个新加入的物件中
  的函式如何被游戏呼叫感到诧异. 在回答这些问题以前, 你需要知道资料种
  类的概念. 这是最无聊但也是最关键性的题目. 有 90% 的错误 (除了 {}
  () :) 放错位子之外) 跟不了解 LPC 资料种类有关. 所以忍受这章无聊的
  课题, 因为一旦你了解了, 你会发现程式写起来容易得多了.

    你可能已经知道电脑看不懂人类使用的文字和数字. 电脑只知道简单的零
  与一. 为了要执行你写程式的目标, 那些指令必须从文字数字改成零与一.

    不论你使用任何语言, 你会有变数 (variable) 可以操作. 那些变数在记
  忆体中储存资料 (data). 例如: 有个变数 x, 在程式中你可以使用叙述
  (statement) 像
     x = 65 
  来设定一个值给 x. 设定了 x 的值之后, 你可以把 x 的值显示在银幕上:
     write(x+"\n");   (附注: \n 是一个换行的符号)
  或者可以设定值给其他的变数:
     y = x + 5;
  但是问题是电脑不知道 65 是什么, 对电脑而言, 二进位的 65 是:
     00000000000000000000000001000001
  可是电脑中 "A" 的预设值也是:
     00000000000000000000000001000001
  所以当你告诉电脑 write(x+"\n"); 之时, 必须告诉电脑你要的到底是 65
  还是 "A".

  这就是资料的种类. 在 LPC 中, 以上的例子需要先行被定义, 像:
     int x;
  这就告诉了电脑有关资料的种类, 所以在以上的例子中, x 就是 65 而不是
  其它种类的资料.

    刚刚提到的就是很基本的普通资料种类. 这一章的目的是要介绍 LPC 的资
  料种类. 大致来说, 资料种类是游戏的执行程式 (driver) 用来决定一个值
  在记忆体中使用及存在的方式. 

    所有的 LPMud 执行程式包含以下的资料种类:
  int , string, object, int *, string *, mixed *, void
    有的执行程式有下列的资料种类:
  float, mapping, float *, mapping *, function, enum, struct, char

  基本的资料种类:
    最基本的资料种类是常见的 void. void 没有任何种类的值. 以 LPC 代号
  的观点来看, 最基本的两种资料种类是 int 跟 string.  int 是整数, 例如:
  1, 17, -42, 0, -10000023 都是 int.  string 是一个或多个文字. 例如:
  "a", "We are borg", "-42", "This is a string" 都是 string. string 
  一定要被放在 "" 之间. 所以执行程式在碰到 -42 和 "-42" 时, 可以分辨
  它们的不同之处, 就像 x 是一个变数, "x" 是一个文字一般.

    当你决定要使用一个变数之时, 在执行任何步骤之前, 必须让执行程式知道
  此变数是属于何种资料种类, 然后才能被正确的使用和执行. 如何让执行程式
  知道变数的资料种类呢? 只需要把资料种类放在变数之前即可. 这个步骤称为
  "变数宣告" (declaring the variable). 例如:

  void add_two_and_two() 
  {
    int x;
    int y;

    x = 2;
    y = x + x;
  }

    在函式的开头, 你就告诉值行程式有两个整数的变数. 宣告的重要性不只是
  让执行程式知道如何使用那些值, 而且也可以帮助执行程式更有效的使用记忆
  体. 宣告之后, 执行程式就准备足够的记忆体来储存 int, 但是却不够储存像
  string, obj 的资料 (因为它们需要较大的记忆体空间). 当执行程式把记忆
  体预留好以及知道如何操作之后, 就可以直接用代号来使用.

    我们现在只说明 int, string, void 三种, 把其它的资料种类留到以后再
  详加说明.

  结论:
    执行程式需要知道每一个变数的种类以及如何操作它们的值. 最简单的 lpc
  资料种类是 int, void, string. 变数种类不能是 void(有 mixed 可以让驱
  动程式不检查型态) 只有的函式可以是 void. 因为不同种类的变数需要不同
  大小的记忆体空间, 以及不同的操作方式 (例如: +,-,*,/ ...) , 因此对执
  行程式而言有不同的意义. 例如:  5+5, 执行程式知道这是加法的操作, 所以
  你得到 10. 如果你打 "a"+"b",执行程式知道这是连接两个文字串, 所以你会
  得到 "ab". 但是若资料种类不对, 极有可能得到错误的结果. 例如: "5"+5, 
  执行程式会把它当成都是文字串来相连, 所以你的到的结果是: "55". 如果你
  本来所要的答案是 10, 那你就得到了错误的答案了.

