cappuccino
发表于 2015-4-21 17:32:14
回复 56# ltblue
这是单个触发器的wait实现啊
cappuccino
发表于 2015-4-21 17:35:45
本帖最后由 cappuccino 于 2015-4-21 05:37 PM 编辑
另外,请教一个语法问题:
有函数a,函数b,函数c,以及变量w
我希望当w=="a"时,运行函数a
w=="b"时, ...
ltblue 发表于 2015-4-21 05:04 PM http://pkuxkx.com/forum/images/common/back.gif
a = function()
print("a")
end
b = function()
print("b")
end
c = function()
print("c")
end
l = {
["a"] = a, ["b"] = b, ["c"] = c
}
w = "a"
l()
ltblue
发表于 2015-4-21 17:43:39
a = function()
print("a")
end
b = function()
print("b")
end
c = function()
print( ...
cappuccino 发表于 2015-4-21 05:35 PM http://pkuxkx.com/forum/images/common/back.gif
原来万能的table还能这么用啊
但是如果把
l={
["a"]=a,
}
这部分也想办法省略或者简写呢?
可否这样
l={}
w="a"
l=w
l()
这样行吗?只要改变w的值?
ltblue
发表于 2015-4-21 17:44:37
回复 61# cappuccino
换句话说,可以同时存在n个协程?只要代码写的”严密“是吗?
ltblue
发表于 2015-4-21 17:46:35
回复ltblue
可以多个模块一起wait.regexp,你多wait.make几次就是了。不过不是很推荐动不动就创 ...
cappuccino 发表于 2015-4-21 04:46 PM http://pkuxkx.com/forum/images/common/back.gif
你的代码我一个都没懂......
wait.make(function()
while true do
local l, w = wait.regexp("触发内容")
触发动作
end
end)
我的理解,这个会一次次的反复触发wait,而每次wait都会等待直到触发内容的到来,一次触发没等到,下一次触发不会继续,是吗?
cappuccino
发表于 2015-4-21 17:47:15
本帖最后由 cappuccino 于 2015-4-21 05:51 PM 编辑
回复 63# ltblue
不行,你相当于执行了"a"(),lua不认。非要那样的话,方法(之一?)是:
w = "a"
loadstring(w .. "()")()
前提是字符串w的值就是函数名
相当于执行了loadstring("a()")()
ltblue
发表于 2015-4-21 17:47:40
回复 60# cappuccino
for i = 1, 10 do
wait.make(function ()
while true do
print(i)
wait.time(1)
end
end)
end
我这个的理解,程序应该是不停的,每隔一秒输出一个1,是吗?
但你的意识估计不是这样
你觉得会是什么结果呢?
cappuccino
发表于 2015-4-21 17:50:14
回复 67# ltblue
我“觉得”会是什么结果有用吗?自己运行下试试呗!不要纸上谈兵
cappuccino
发表于 2015-4-21 17:56:35
回复cappuccino
换句话说,可以同时存在n个协程?只要代码写的”严密“是吗?
ltblue 发表于 2015-4-21 05:44 PM http://pkuxkx.com/forum/images/common/back.gif
“同时存在”这个词所指太模糊,如果是最宽泛的那种意义的话——当然,你创建100个协程也没人管。但是如果你总是随意地创建协程却忘记让它们寿终正寝的话,那你的机器跑着跑着就会崩溃的。
ltblue
发表于 2015-4-21 17:57:24
回复 68# cappuccino
运行的结果是,先输出了1-10,然后每秒输出1-10,虽然顺序不一定
这么说是10个协程同时运行了
可是为什么呢?
我按照论坛某个帖子的说法,几乎所有的调用,只要可能涉及到协程的,都是这么写的
co = coroutine.create(function()
autodraw("%1")
end)
coroutine.resume(co)
而在lua文件里,根本没有wait.make命令
我写代码也都是
function text(a)
开头,而不是以
wait.make(function()
开头,
话说,这样的函数是匿名的吗?如果不匿名是不是应该是
wait.make(text=function()
开头呢?
页:
1
2
3
4
5
6
[7]
8
9
10
11
12