跳转到内容

英文维基 | 中文维基 | 日文维基 | 草榴社区

模块:Complex Number/Example/doc

本页使用了标题或全文手工转换
维基百科,自由的百科全书

这是Module:Complex Number/Example的文档页面

本说明文件主要目的是说明如何定义一个新的与Module:Complex Number系列函数库的兼容函数库。

说明

[编辑]

若要定义一个新的Module:Complex Number系列函数库需要实作一个新的物件,并实作其Metatables中的运算子。

定义数学数据结构

参阅第85行

数学数据结构需要定义成一个table,并以table来定义或表达所需要的数字。即使数字只有单一物件,也许使用table因为这样才能通过实作Metatables来完成Module:Complex Number系列函数库所需的相关功能。

  • numberType:本数学数据结构的类型名称(字符串),用于Module:Complex Number系列函数库的识别(参阅第92行
  • update():更新结构数值的成员函数(参阅第89行
  • clean():去除过小值或误差值的成员函数,并返回结果。若无此需求,直接返回自身即可。(参阅第90行

实作metatable

参阅第47行

需定义Metatables的 __add(加法)、 __sub(减法)、 __mul(乘法)、 __div(除法)、 __mod(取余数)、 __unm(相反数)、 __eq(相等判断)、 __tostring(以字符串表达本物件)

定义数学数据结构的建构子

参阅第85行第95行

由于数学数据结构需要定义为table因此需要有建构子来赋予该结构初值。建构子需要完成以下步骤:

  • 读取输入的物件或字符串将其存入table物件中(参阅第91行
  • 设置table的metatable为刚才定义的metatable(参阅第88行
  • 定义其他所需的成员变数或函数

定义数学库的初始化函数

参阅第101行

数学库必须是一个独立物件,所有的函数皆需定义在数学函数库物件下(包括数学数据结构的建构子)。初始化数学库的函数名称必为init,当中需要定义以下内容:

完成数学库的定义

视情况定义列于Module:Complex_Number/doc#比较中的各项函数(如需支援Module:Complex_Number/Functions的情况)。