源码安装Lua5.1
在INSTALL中查看platform: aix ansi bsd freebsd generic linux macosx mingw posix solaris 修改Makefile: INSTALL_TOP= /Users/xuguangwu486/software/lua5.1.5 make macosx make test make install
安装cjson
修改Makefile: PREFIX = /Users/xuguangwu486/software/LuaJIT2.0.4 LUA_INCLUDE_DIR = $(PREFIX)/include/luajit-2.0 macos上需要打开 CJSON_LDFLAGS = -bundle -undefined dynamic_lookup
make & make install
控制台出现: mkdir -p //Users/xuguangwu486/software/LuaJIT2.0.4/lib/lua/5.1 cp cjson.so //Users/xuguangwu486/software/LuaJIT2.0.4/lib/lua/5.1 chmod 755 //Users/xuguangwu486/software/LuaJIT2.0.4/lib/lua/5.1/cjson.so
Lua中有8个基本类型分别为:nil、boolean、number、string、userdata、function、thread和table。
nil 在条件表达式中相当于false
使用 # 来计算字符串的长度,放在字符串前面 len = “www” print(#len)
字符串连接使用的是 ..
泛型迭代器 for k, v in pairs(t) do print(k, v) end
local tbl2 = {“apple”, “pear”, “orange”, “grape”} for key, val in pairs(tbl) do print(“Key”, key) end
步长迭代 for i= 0, 2 do print(array[i]) end
optional_function_scope function function_name( argument1, argument2, argument3…, argumentn) function_body return result_params_comma_separated end
optional_function_scope: 关键字local设置函数为局部函数
单引号间的一串字符。 双引号间的一串字符。 [[和]]间的一串字符。
string.upper(argument):字符串全部转为大写字母。 string.lower(argument):字符串全部转为小写字母。 string.gsub(mainString,findString,replaceString,num):string.gsub(“aaaa”,”a”,”z”,3)–>zzza 3 string.find (str, substr, [init, [end]]) ->string.find(“Hello Lua user”, “Lua”, 1)–>7 9 string.reverse(arg):字符串反转 string.format(…):string.format(“the value is:%d”,4) string.len(arg) string.rep(string, n):返回字符串string的n个拷贝 -> string.rep(“abcd”,2) -> abcdabcd string.gmatch(str, pattern): string.match(str, pattern, init)
table.concat (table [, sep [, start [, end]]]): fruits = {“banana”,”orange”,”apple”}->print(“连接后的字符串 “,table.concat(fruits,”, “))
table.insert (table, [pos,] value): table.remove (table [, pos]):默认删除最后一个元素 table.sort (table [, comp])
Lua 的模块是由变量、函数等已知元素组成的 table,因此创建一个模块很简单,就是创建一个 table,然后把需要导出的常量、函数放入其中,最后返回这个 table 就行。 Lua提供了一个名为require的函数用来加载模块,require(“<模块名>")模块名>
加载机制:export LUA_PATH=”~/lua/?.lua;;” 文件路径以 “;” 号分隔,最后的 2 个 “;;” 表示新加的路径后面加上原来的默认路径。
面向对象: Rectangle = {area = 0,length = 0,width = 0} –三个属性
function Rectangle:new(o,length,width) o = o or {} setmetatable(o, self) self.__index = self self.length = length or 0 self.width = width or 0 self.area = length*width; return o end
function Rectangle:printInfo() print(self.area) –使用点号(.)来访问类的属性 end
instance = Rectangle:new(nil,1,2) –使用冒号 : 来访问类的成员函数
instance:printInfo()