• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

lua"诡异"的return用法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

lua "诡异"的return用法

 
德哥 2016-03-29 15:38:42 浏览5690 评论0

摘要: 在Lua中, return的用法比较"诡异", 为什么这么说呢, 因为它只能用在block结束的地方, 不能用在block的一个中间部分.例如function a() i = 1 return i -- 这里会报错, 提示return后面必须是end, 意思是既然你要return了, 那么就结束这个块吧.

在Lua中, return的用法比较"诡异", 为什么这么说呢, 因为它只能用在block结束的地方, 不能用在block的一个中间部分.
例如
function a()
  i = 1
  return i  -- 这里会报错, 提示return后面必须是end, 意思是既然你要return了, 那么就结束这个块吧.
  i = 2
end

例如 : 
> function a()
>>   i = 1
>>   return i
>>   i = 2
stdin:4: 'end' expected (to close 'function' at line 1) near 'i'

那么如果要在一个函数或者一个block的非末尾部分使用return 怎么用呢?
可以把return 包在do end之间. 例如 : 
> function a()
>>   i = 1
>>   do return i end  -- 这里是允许的.
>>   i = 2
>> end
> print(a())
1

另外, return在循环, 判断中的使用也和函数中类似, 必须使用在循环结束, 或者判断的一个拐点结束前. 例如 : 
> if i == 1
>> then
>>   return  -- 这里不能使用, 因为下面不是elseif或者else或者end.
>>   i=2
stdin:4: 'end' expected (to close 'if' at line 1) near '='

所以在判断中, 放在一个拐点结束前 : 
if i == 1
then
  return
elseif i == 2
  then
  return
else
  return
end

-- 以上用法是可以的, return分别放在elseif, else, end前面. 拐点 结束前.
在循环中使用则放在循环结束前.
但是你会发现, 如果结束处用的是一个print函数, 居然不报错 : 
> for x=1,10,1 do
>> print(x)
>> return
>> print(x+1)
>> end
1
2

return后面换成赋值就报错了
> for x=1,10,1 do
print(x)
return
print(x+1) 
x=2
stdin:4: 'end' expected (to close 'for' at line 1) near 'x'
> for x=1,10,1 do
print(x)
return
x=2           
stdin:4: 'end' expected (to close 'for' at line 1) near '='

"诡异"来形容不为过.
还是得把return包在一个do end里面
> for x=1,10,1 do
print(x)
do return end
print(x)
x=2
>> end
1

用在repeat中
> repeat do
i=1
print(i)
return 
print(i) 
end until i == 2
1
1
> repeat do
i=1
print(i)
return 
print(i) 
x=2   -- 这里又会报错.
end until i == 2
stdin:4: 'end' expected (to close 'do' at line 1) near 'x'
本文为云栖社区原创内容,未经允许不得转载,如需转载请发送邮件至[email protected];如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:[email protected] 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
基于VS的lua安装发布时间:2022-07-22
下一篇:
installvimwithluaonubuntu12.04发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap