求教一个Lua函数问题

zaixiankaifa 2013-05-05 09:39:48
最近在看Lua,发现遇到一个问题:
function HowMany(...)

if arg.n > 0 then
for indx=1,arg.n do
local myString =string.format("%s%d","Argument ",indx,":")
print(myString.arg[indx])
end

else
print("No variables entered.")
end

end

HowMany(3,5)

调用该函数后,执行lua命令没反应,请教各位高手咋办? 到地址那里有问题了?
...全文
160 9 点赞 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wliangde 2013-12-11
感谢楼主,我5.2也遇到这个问题了。
  • 打赏
  • 举报
回复
zaixiankaifa 2013-05-07
查阅了5.2手册,正确的应该这样写: 1 function HowMany(...) 2 local arg={...} 3 4 if #arg>0 then 5 for indx=1,#arg do 6 local myString =string.format("%s%d%s","Argument ",indx,":"..arg[indx]) 7 print(myString) 8 end 9 10 else 11 print("No variables entered.") 12 end 13 14 end 15 16 17 HowMany(3,5 ) 18 ~ ~ ~ ~ ~ ~ ~
  • 打赏
  • 举报
回复
u010601544 2013-05-07
if arg.n > 0 then for indx=1,arg.n do local myString =string.format("%s%d","Argument ",indx,":") print(myString.arg[indx]) end else print("No variables entered.") end end HowMany(3,5) http://Riben.in日剧吧 www.wolcol.net 五彩科技 http://www.ceclub.cn 风行网官方下载 www.dyncd.com德阳装修
  • 打赏
  • 举报
回复
zaixiankaifa 2013-05-06
引用 3 楼 zhouchongzxc 的回复:
应该学会看异常信息 lua: 5.1.2.lua:3: attempt to compare number with nil 的意思你明白的吧(nil == 0 ?) stack traceback呢? 好像许多的语言都有这个概念(应该是查看函数的调用顺序的意思) 5.1.2.lua:3: in function 'HowMany' 这里的3应该是行号的意思,你看看第3行是什么(应该是那句 if arg.n > 0 ,可为什么arg.n 是nil呢?) 在第3行之前加一句 print(arg.n)
引用 3 楼 zhouchongzxc 的回复:
应该学会看异常信息 lua: 5.1.2.lua:3: attempt to compare number with nil 的意思你明白的吧(nil == 0 ?) stack traceback呢? 好像许多的语言都有这个概念(应该是查看函数的调用顺序的意思) 5.1.2.lua:3: in function 'HowMany' 这里的3应该是行号的意思,你看看第3行是什么(应该是那句 if arg.n > 0 ,可为什么arg.n 是nil呢?) 在第3行之前加一句 print(arg.n)
按照你所说的前面加上print(arg.n),还是无法解决这个问题,加上你说的print(arg.n),会打印出来一个nil : zhaomatoMacBook-Pro:lua feng$ lua 5.1.2.lua nil lua: 5.1.2.lua:5: attempt to compare number with nil stack traceback: 5.1.2.lua:5: in function 'HowMany' 5.1.2.lua:18: in main chunk [C]: in ? zhaomatoMacBook-Pro:lua feng$ cat 5.1.2.lua function HowMany(...) print(arg.n) if arg.n>0 then for indx=1,arg.n do local myString =string.format("%s%d","Argument ",indx,":") print(myString.arg[indx]) end else print("No variables entered.") end end HowMany( ) zhaomatoMacBook-Pro:lua feng$ 还是出现同样提示说在 if arg.n>0 then 有nil错误,不知道怎么解决。。。。
  • 打赏
  • 举报
回复
zhouchongzxc 2013-05-06
应该学会看异常信息 lua: 5.1.2.lua:3: attempt to compare number with nil 的意思你明白的吧(nil == 0 ?) stack traceback呢? 好像许多的语言都有这个概念(应该是查看函数的调用顺序的意思) 5.1.2.lua:3: in function 'HowMany' 这里的3应该是行号的意思,你看看第3行是什么(应该是那句 if arg.n > 0 ,可为什么arg.n 是nil呢?) 在第3行之前加一句 print(arg.n)
  • 打赏
  • 举报
回复
zaixiankaifa 2013-05-06
引用 1 楼 zhouchongzxc 的回复:
连个错误信息也没有吗?
错误提示为: zhaomatoMacBook-Pro:lua feng$ lua 5.1.2.lua lua: 5.1.2.lua:3: attempt to compare number with nil stack traceback: 5.1.2.lua:3: in function 'HowMany' 5.1.2.lua:15: in main chunk [C]: in ? 结果我不知道什么错误。。。。。。。。
  • 打赏
  • 举报
回复
zaixiankaifa 2013-05-06
引用 5 楼 zhouchongzxc 的回复:
你下载lua 5.1.4 看看是否也是nil。
b 我找别人的5.1.4试过这个程序,没有任何问题,但是我现在这个mac版本的5.2.1就出现这个问题了。难道是版本的原因?另外我试了几个程序也都出现类似问题: function Multiply(val1,val2,...) local myString if arg.n==0 then myString=string.format("%d%s%d%s%d",val1,"*","val2","=",val1*val2) else local val3=val1*val2*arg[1] myString=string.format("%d%s%d%s%d%s%d",val1,"*",val2,"*",arg[1],"=",val3) end print(myString) end Multiply() 错误提示: lua: 5.1.2.2.lua:6: attempt to perform arithmetic on local 'val1' (a nil value) stack traceback: 5.1.2.2.lua:6: in function 'Multiply' 5.1.2.2.lua:12: in main chunk [C]: in ? 还有一个: myString = "math.max(7,8,9,10)" loadstring(myString)() lua: 5.2.1.lua:3: attempt to call global 'loadstring' (a nil value) stack traceback: 5.2.1.lua:3: in main chunk [C]: in ? 都是出现类似的说值有问题的现象,很奇怪
  • 打赏
  • 举报
回复
zhouchongzxc 2013-05-06
你下载lua 5.1.4 看看是否也是nil。
  • 打赏
  • 举报
回复
zhouchongzxc 2013-05-05
连个错误信息也没有吗?
  • 打赏
  • 举报
回复
相关推荐
发帖
其他开发语言
创建于2007-08-27

3382

社区成员

其他开发语言 其他开发语言
申请成为版主
帖子事件
创建了帖子
2013-05-05 09:39
社区公告
暂无公告