您的位置:首页 > 编程语言 > Lua

Seven More Languages in Seven Weeks (读书笔记):Lua

2016-03-30 15:12 441 查看

Lua

Day 1
字符串拼接:"Hello" .. " world"
REPL:> =(function(num) return 3 * num end)(2)
函数传参:nil填充
‘命名’参数:function f(table) ... end; ==> f{a=1,b="2"}
elseif
for i=1,5,2 do ... end

Day 2
迭代table:for k, v in pairs(t) do result[#result + 1] = k .. ": " .. v end
Metatables
__tostring
__index
__newindex
Prototypes based OO:new = function(self, args...)
setmetatable(obj, self)
self.__index = self

语法糖:table:method() instead of table.method(self)

Coroutines:create/resume/yield
function fibonacci() ... coroutine.yield(m) ...
generator = coroutine.create(fibonacci)
succeeded, value = coroutine.resume(generator)

Day 3:‘动态语言’vs‘脚本语言’
lua_State* L = luaL_newstate();
luaL_openlibs(L);
luaL_dostring(L, "print('Hello world!')"); //<---
lua_close(L);

lua_pushcfunction(L, midi_send);
➤lua_setglobal(L, "midi_send");

int midi_send(lua_State* L){
double status = lua_tonumber(L, -3); //第一个参数?栈顶(最后一个参数)是-1

字符串匹配:local letter, octave, value = string.match(s, "([A-Gs]+)(%d+)(%a+)") //?奇怪的语法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息