[转帖]lua-book-模块

lua,book,模块 · 浏览次数 : 0

小编点评

**模块在 Lua5.1 中的定义** 模块是包含变量和函数等已知元素的 table。创建一个模块很简单,就是创建一个 table,然后把需要导出的常量、函数放入其中,最后返回这个 table 就行。 **使用 require 引入模块** 使用 `require` 函数可以引入模块,并将其作为变量访问。例如: ```lua local m = require("mymodule") ``` **模块定义的语法** 模块的定义使用冒号来定义变量和函数,或者使用点号来定义函数。例如: ```lua local mytable = {} mytable.func1 = function(self, name) -- 使用冒号定义函数 self.name = name end local func2 = function(name) -- 使用点号定义函数 self.name = name end ``` **点号和冒号操作符的区别** * **点号操作符**将内容展开并作为字符串传递给函数。 * **冒号操作符**将一个自变量作为第一个参数传递给函数。 **函数定义时默认参数** 在函数定义时,使用冒号将默认接收一个 `self` 参数。例如: ```lua function myfunc(self, name) -- 使用冒号定义参数 self.name = name end ``` **函数定义时显式参数** 在函数定义时,使用点号显式地传入 `self` 参数。例如: ```lua function myfunc(name) -- 使用点号定义参数 self.name = name end ```

正文

http://me.52fhy.com/lua-book/chapter6.html

 


模块

从Lua5.1开始,Lua添加了对模块和包的支持。

Lua 的模块是由变量、函数等已知元素组成的 table,因此创建一个模块很简单,就是创建一个table,然后把需要导出的常量、函数放入其中,最后返回这个 table 就行。

示例:

mymodule.lua

local _M = {}

_M.VERSION = "1.0"

_M.getName = function()
	return "get"
end

return _M

使用require即可引入模块:

local m = require "mymodule"
print(m.VERSION)
print(m.getName())

输出:

1.0
get

点号与冒号操作符的区别

看下面示例代码:

local str = "abcde"
print("case 1:", str:sub(1, 2))
print("case 2:", str.sub(str, 1, 2))

输出:

case 1: ab
case 2: ab

冒号操作会带入一个 self 参数,用来代表 自己 。而点号操作,只是内容的展开,需要手动传入self 参数。

在函数定义时,使用冒号将默认接收一个 self 参数,而使用点号则需要显式传入 self 参数。

示例:

mytable = {}
mytable.func1 = function(self, name)
	self.name = name
end

mytable:func2 = function(name)
	self.name = name
end

这里的func1func2是等价的。

与[转帖]lua-book-模块相似的内容:

[转帖]lua-book-模块

http://me.52fhy.com/lua-book/chapter6.html 模块 从Lua5.1开始,Lua添加了对模块和包的支持。 Lua 的模块是由变量、函数等已知元素组成的 table,因此创建一个模块很简单,就是创建一个table,然后把需要导出的常量、函数放入其中,最后返回这个

[转帖]Ngx_lua

http://me.52fhy.com/lua-book/chapter12.html 简介 ngx_lua 指的是 lua-nginx-module模块:通过将 LuaJIT 的虚拟机嵌入到 Nginx 的 worker 中,这样既保持高性能,又能不失去lua开发的简单特性。 OpenResty 

[转帖]lua-book-文件操作

http://me.52fhy.com/lua-book/chapter8.html Lua I/O 库用于读取和处理文件。分为简单模式、完全模式。 简单模式(simple model) 拥有一个当前输入文件和一个当前输出文件,并且提供针对这些文件相关的操作。 完全模式(complete model

[转帖]lua-book

http://me.52fhy.com/lua-book/chapter2.html 数据类型 [TOC] @date: 2018-3-18 Lua中有8个基本类型分别为:nil、boolean、number、string、table、function、userdata、thread。 函数 typ

[转帖]lua-book-运算符

http://me.52fhy.com/lua-book/chapter3.html Lua支持下列主要的运算符: 算术运算符 关系运算符 逻辑运算符 赋值运算符 还支持..、#特殊运算符。其中赋值运算符仅支持=,不支持C语言的+=、++等运算符。 算术运算符 + 加法 - 减法或者负号 * 乘法

[转帖]lua-book-控制语句

http://me.52fhy.com/lua-book/chapter4.html Lua 语言提供的控制结构有 if-else,while,repeat,for,并提供 break、return 关键字来满足更丰富的需求。不支持switch、continue。 Lua 提供的控制语句部分特征类似

[转帖]lua-book-函数

http://me.52fhy.com/lua-book/chapter5.html 在 Lua 中,函数 也是一种数据类型,函数可以存储在变量中,可以通过参数传递给其他函数,还可以作为其他函数的返回值。 函数定义 函数定义格式: function function_name (arc) -- ar

[转帖]lua-book-常用库介绍

http://me.52fhy.com/lua-book/chapter7.html String 库 .. 链接两个字符串 string.upper(argument) 字符串全部转为大写字母。 string.lower(argument) 字符串全部转为小写字母。 string.len(arg)

[转帖]lua-book-元表

http://me.52fhy.com/lua-book/chapter9.html 在Lua5.1语言中,元表 (metatable) 的表现行为类似于 C++ 语言中的操作符重载,类似PHP的魔术方法。Python里也有元类(metaclass)一说。 通过元表,Lua有了更多的扩展特性。Lua

[转帖]Redis里使用Lua

http://me.52fhy.com/lua-book/chapter11.html 版本:自2.6.0起可用。 时间复杂度:取决于执行的脚本。 使用Lua脚本的好处: 减少网络开销。可以将多个请求通过脚本的形式一次发送,减少网络时延。 原子操作。redis会将整个脚本作为一个整体执行,中间不会被