Lua 笔记--串行化、require和模板

--串行化:
function serialize(o)
	if type(o) == "number" then
		io.write(o)
	elseif type(o) == "string" then
		io.write(string.format("%q", o))
	elseif type(o) == "table" then
		io.write("{\n")
		for k,v in pairs(o) do
			io.write(" ", k, " = ")
			serialize(v)
			io.write(",\n")
		end
		io.write("}\n")
	else
	end
end
serialize(2)
print("\n")
serialize("Jacedy")
print("\n")
serialize({i = 2, s = "ok"})

--输出:
2
"Jacedy"
{
 i = 2,
 s = "ok",
}

        require的使用:

--[[
require("test1")        --test1 ==> test1.lua
showname("Jacedy")      --showname() 为test1.lua 中的一个函数,加载后可直接使用
]]

local m = require("test1")
m.showname("Jacedy")

--按路径加载
require("app.test.test1")        --app/test/test1.lua

加载过程:

1、判断这个包是否存在

2、判断包是否加载

3、如果没有返回nil 或者报错

4、反之则返回相应的模块对象

        模块(module)的编写方法:

--test1.lua

complex = {}

function complex.showname()        --表示showname属于complex
    print("Jacedy")
end

return complex
--test2.lua

local t = require("test1")
t.showname()                    -->Jacedy

 

--编写模板的基本方法

--方法一:

local M = {}
complex = M --模块名
M.i = {r=0, i=1}
function M.new( r, i )
return {r=r, i=i}
end
function M.add( c1, c2 )
return M.new(c1.r + c2.r, c1.i + c2.i)
end
return M

--方法二:(优化)

local modname = ...
local M = {}
_G[modname] = M 
package.loaded[modname] = M 
--经过这样的修改,若需要重命名一个模板,只需重命名并定义它的文件就可以了
--通过这样的赋值,就不需要在模板结尾返回M了
M.i = {r=0, i=1}
function M.new( r, i )
return {r=r, i=i}
end
function M.add( c1, c2 )
return M.new(c1.r + c2.r, c1.i + c2.i)
end
时间: 2024-10-05 23:52:50

Lua 笔记--串行化、require和模板的相关文章

.NET使XML串行化易如反掌

xml   人们一直高喊XML是解决系统互联问题的关键, 而.NET framework 也为处理XML数据提供了许多不同的类库. XmlDocument 类能让你像处理文件一样处理XML 数据, 而XmlReader, XmlWriter, 和它们的派生类使你能够将XML 数据做为数据流处理. XmlSerializer 则提供了另外的方法, 它使你能够将自己的对象串行和反串行化为XML. 串行化数据既能够让你像处理文件一样对数据进行随机存取, 同时又能够跳过你不感兴趣的元素. 在本文中, 我

第十三节--对象串行化 -- Classes and Objects in PHP5 [13]

object|php5|对象 +-------------------------------------------------------------------------------+| = 本文为Haohappy读<<Core PHP Programming>> | = 中Classes and Objects一章的笔记 | = 翻译为主+个人心得 | = 为避免可能发生的不必要的麻烦请勿转载,谢谢 | = 欢迎批评指正,希望和所有PHP爱好者共同进步! +-------

第十三节--对象串行化_php基础

/* +-------------------------------------------------------------------------------+ | = 本文为Haohappy读<<Core PHP Programming>>  | = 中Classes and Objects一章的笔记  | = 翻译为主+个人心得  | = 为避免可能发生的不必要的麻烦请勿转载,谢谢  | = 欢迎批评指正,希望和所有PHP爱好者共同进步!  | = PHP5研究中心: 

PHP面向对象04_串行化

oop04复习 2014-9-3 10:48:45 要点: --1.克隆对象 --2.__toString( ) --3. __call( ) --4.自动加载类 --5.对象串行化   1.克隆对象以及__clone()方法 概述:对象属于引用类型,普通的"="号属于引用赋值 有时可能需要根据一个对象完全克隆出一个一模一样的对象,而且克隆以后,两个对象互不干扰. 格式: $obj = new Class(); $obj2 = clone $obj;    但是,当要克隆的对象中有子对

XML串行化数据基础

xml|数据 XML文档使用越来越普遍,我们常会把一些系统设置等文件用config或XML文档存文在程序目录下..Net的串行化数据是一个很令人心动的技术,可以很方便地读取一定格式或保存成文件.下面做个简单了练习,对XML串行化作些初步了解.(注:我是在WINDOWS应用程序上做的练习,因怕建立ASP.NETA工程麻烦,下面一大堆东西.其实除了路径外,程序写法基本一致). 先编写一个需要串行化的类,该类是设置一个操作权限的设置文件 using System; namespace Hellosea

XML串行化数据的基础

xml|数据 XML文档使用越来越普遍,我们常会把一些系统设置等文件用config或XML文档存文在程序目录下..Net的串行化数据是一个很令人心动的技术,可以很方便地读取一定格式或保存成文件.下面做个简单了练习,对XML串行化作些初步了解.(注:我是在WINDOWS应用程序上做的练习,因怕建立ASP.NETA工程麻烦,下面一大堆东西.其实除了路径外,程序写法基本一致). 先编写一个需要串行化的类,该类是设置一个操作权限的设置文件 using System; namespace Hellosea

PHP5.0对象模型探索之对象串行化

php5|对象     串行化可以把变量包括对象,转化成连续bytes数据,你可以将串行化后的变量存在一个文件里或在网络上传输,然后再反串行化还原为原来的数据.你在反串行化类的对象之前定义的类,PHP可以成功地存储其对象的属性和方法. 有时你可能需要一个对象在反串行化后立即执行.为了这样的目的,PHP会自动寻找__sleep和__wakeup方法. 当一个对象被串行化,PHP会调用__sleep方法(如果存在的话). 在反串行化一个对象后,PHP 会调用__wakeup方法. 这两个方法都不接受

PHP中的串行化变量和序列化对象

变量|对象     串行化大概就是把一些变量转化成为字符串的字节流的形式,这样比较容易传输.存储.当然,关是传输存储没有什么,关键是变成串的形式以后还能够转化回来,而且能够保持原来数据的结构. 在PHP中有多串行化处理的函数:serialize(),该函数把任何变量值(除了资源变量)转化为字符串的形式,可以把字符串保存到文件里,或者注册为Session,乃至于使用curl来模拟GET/POST来传输变量,达到RPC的效果. 如果要将串行化的变量转化成PHP原始的变量值,那么可以使用unseria

使用MFC串行化数据和C++对象

串行化数据 --例子程序:Memo 创建一个新的单文档 SDI 应用,视图类选择 CFormView,以便用户可以在窗口中输入. 在界面中创建三个编辑框,然后再添加三个相应的编辑框变量.这三个变量是视图类的成员变量,为了交互数据,文档类中也要创建三个对应的变量.然后,文档类和视图类都要对数据成员进行初始化操作,在文档类中这个工作通常都在 OnNewDocument() 函数中进行.因为下面任何一个操作发生时都触发文档类 OnNewDocument()函数执行: 当用户启动应用程序: 当用户在"F