Lua编程示例(一):select、debug、可变参数、table操作、error_Lua

function test_print(...)
 for i=1,select("#",...) do
 print(i,select(i,...))
 end
end

test_print(11,12,13,14)

print()
print(debug.traceback())
print()

function test(...)
 for i=1,arg.n do
 print(i.."\t"..arg[i])
 end
end

test("a",2,34,234)
print()
g={}

table.insert(g,{
 name="Clairs",
 level = 70,
})
table.insert(g,{
 name="SEGA",
 level = 35,
})
table.insert(g,{
 name="Millber",
 level = 50,
})
function myprint()
 for i,v in ipairs(g) do
 print(i,v["level"],v.name)
 end
end

myprint()
function comp(a,b)
 return a.level<b.level
end
table.sort(g,comp)

print()
myprint()

print()
function foo(str)
 if type(str) ~= "string" then
 error("string error!",2)
 end
end

--foo({x =1 })

tb1={ "asdf","bate","game",one="heihei"}
table.insert(tb1,3,"haha")
table.remove(tb1,2)
for i,v in ipairs(tb1) do
 print(v)
end
print(#tb1)

运行结果为:

1 11 12 13 14
2 12 13 14
3 13 14
4 14

stack traceback:
 my_test.lua:12: in main chunk
 [C]: ?

1 a
2 2
3 34
4 234

1 70 Clairs
2 35 SEGA
3 50 Millber

1 35 SEGA
2 50 Millber
3 70 Clairs

asdf
haha
game
3

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索select
, debug
, table
, lua
, 可变参数
error
,以便于您获取更多的相关知识。

时间: 2024-09-20 05:48:03

Lua编程示例(一):select、debug、可变参数、table操作、error_Lua的相关文章

Lua编程示例(七):协同程序基础逻辑_Lua

co=coroutine.create(function() print("hi") end) print(coroutine.status(co)) coroutine.resume(co) print(coroutine.status(co)) print() co=coroutine.create(function() for i=1,2 do print("co",i) coroutine.yield() end end) coroutine.resume(

Lua编程示例(三):稀疏表、双端队列、格式化输出、表和循环表的格式化输出_Lua

a={} for i=1,10 do a[i]={} for j=0,10 do if(i%2==0) then a[i][j]=0 end end end print(a[9][10]) print(a[10][10]) print() --双端队列 List={} function List.new() return {first = 0,last = -1} end function List.pushleft(list,value) local first= list.first-1 l

Lua编程示例(六): C语言调用Lua函数_Lua

C++端: #include "stdafx.h" lua_State *L; void load_lua(lua_State **L,char *filename){ *L=luaL_newstate(); luaL_openlibs(*L); if(luaL_loadfile(*L,filename) || lua_pcall(*L,0,0,0)){ luaL_error(*L,"load file error! %s",lua_tostring(*L,-1))

Lua编程示例(二):面向对象、metatable对表进行扩展_Lua

counter = { count = 0 } function counter.get(self) return self.count end function counter:inc() self.count=self.count+1 end print(counter.get(counter)) counter.inc(counter) print(counter.get(counter)) counter2={ count=4, get = counter.get, inc = coun

Lua编程示例(八):生产者-消费者问题_Lua

这个问题是比较经典的啦,基本所有语言的多线程都会涉及到,但是没想到Lua的这个这么复杂 抓狂   看了好长时间才算看明白,先上个逻辑图:    开始时调用消费者,当消费者需要值时,再调用生产者生产值,生产者生产值后停止,直到消费者再次请求.设计为消费者驱动的设计.    图画的不太好,可以先将Filter遮住,它是过滤器对两个程序之间传递的信息进行处理.去掉Filter逻辑就更清晰些了,就是两个"线程"(其实是两个协同程序)互相调用.resume回到yield处开始,支持嵌套,返回到栈

Lua编程示例(四):Lua标准库之表库、字符串库、系统库_Lua

tb1 = { "alpha","log","gamme"} print(table.concat(tb1," , ")) print(table.concat(tb1,"\n",nil,2)) print() tb1[88.99] = 'aaa' --返回索引值最大的值,并且计算小数 print(table.maxn(tb1)) print() --默认删除索引最大的元素并返回 print(table.r

Lua编程示例(五): C语言对Lua表的读取和添加_Lua

#include "stdafx.h" lua_State *L; void load_lua(char *filename){ L=luaL_newstate(); luaL_openlibs(L); if((luaL_loadfile(L,filename) || lua_pcall(L,0,0,0))!= 0){ luaL_error(L,"loadfile error! \n %s",lua_tostring(L,-1)); } } double getfi

Lua中的函数(function)、可变参数、局部函数、尾递归优化等实例讲解_Lua

一.函数 在Lua中,函数是作为"第一类值"(First-Class Value),这表示函数可以存储在变量中,可以通过参数传递给其他函数,或者作为函数的返回值(类比C/C++中的函数指针),这种特性使Lua具有极大的灵活性.   Lua对函数式编程提供了良好的支持,可以支持嵌套函数.   另外,Lua既可以调用Lua编写的函数,还可以调用C语言编写的函数(Lua所有的标准库都是C语言写的).   定义一个函数 复制代码 代码如下: function hello() print('he

C语言利用va_list、va_start、va_end、va_arg宏定义可变参数的函数

在定义可变参数的函数之前,先来理解一下函数参数的传递原理: 1.函数参数是以栈这种数据结构来存取的,在函数参数列表中,从右至左依次入栈. 2.参数的内存存放格式:参数的内存地址存放在内存的堆栈段中,在执行函数的时候,从最后一个(最右边)参数开始入栈.因此栈底高地址,栈顶低地址,举个例子说明一下: void test(int a, float b, char c); 那么,在调用test函数的时候,实参char c先进栈,然后是float b,最后才是int a,因此在内存中变量的存放次序是c->