lua "诡异"的return用法
https://yq.aliyun.com/articles/11387
lua "诡异"的return用法
德哥 2016-03-29 15:38:42 浏览5690 评论0
摘要: 在Lua中, return的用法比较"诡异", 为什么这么说呢, 因为它只能用在block结束的地方, 不能用在block的一个中间部分.例如function a() i = 1 return i -- 这里会报错, 提示return后面必须是end, 意思是既然你要return了, 那么就结束这个块吧.
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'
> 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
> 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 '='
> 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'
lua "诡异"的return用法的更多相关文章
- C#中yield return用法分析
这篇文章主要介绍了C#中yield return用法,对比使用yield return与不使用yield return的流程,更直观的分析了yield return的用法,需要的朋友可以参考下. 本文 ...
- C# yield return 用法与解析
原文:C# yield return 用法与解析 C# yield return 用法与解析 本文参考自:http://www.jb51.net/article/54810.htm 当初没有认真理解 ...
- C# yield return用法
本文实例讲述了C#中yield return用法,并且对比了使用yield return与不使用yield return的情况,以便读者更好的进行理解.具体如下: yield关键字用于遍历循环中,yi ...
- C#中的yield return用法演示源码
下边代码段是关于C#中的yield return用法演示的代码. using System;using System.Collections;using System.Collections.Gene ...
- js 之 continue break return 用法及注意事项
1,continue continue有两种用法: 1,continue; 这种用法必须包含在循环里,否则报错,例子: for(var i=0;i<10;i++){ if(i%2===0){ c ...
- 【转】C#中continue、break和return用法
continue和break的用法一样,直接写上这个单词,后面加一个分号就行 比如: continue; break; 我们先来谈continue 看代码 for (int i=0; i<10; ...
- Break、continue、return用法(C++)
(1)break 直接调出当前循环体.如果是嵌套循环,他只能调出一层循环体. Exp-1: 程序: #include<iostream> using namespace std; int ...
- Java-break,continue,return用法
当年的我也算是基础小王子,但是长时间的不用导致我与他们越来越陌生了,所以我要把他们记在我的本本上. 首先我们要明白,java中到底有多少个循环关键字? 答:没错,就是3个,他们分别是:for(初始值: ...
- html、text、val、attr、prop区别。this.value和$(this).val()区别以及return用法
html(): html() 方法返回或设置被选元素的内容 (inner HTML). 当使用该方法读取多个值时,它会返回第一个匹配元素的内容. 当使用该方法设置一个值时,它会覆盖所有匹配元素的内容. ...
随机推荐
- WCF分布式开发步步为赢(1):WCF分布式框架基础概念
众所周知,系统间的低耦合一直是大型企业应用系统集成追寻的目标,SOA面向服务架构的出现为我们的如何利用现有企业系统资源进行企业ERP系统设计和实现提供了重要的参考原则.SOA如此炙手可热,各大厂商都推 ...
- C语言条件编译(#if,#ifdef,#ifndef,#endif,#else,#elif)
1.条件编译介绍 条件编译(conditional compiling)命令指定预处理器依据特定的条件来判断保留或删除某段源代码.例如,可以使用条件编译让源代码适用于不同的目标系统,而不需要管理该源代 ...
- vi/vim使用总结
第一部份:一般模式可用的按钮说明,光标移动.复制粘贴.搜索取代等 移动光标的方法: h 或 向左箭头键(←) 光标向左移动一个字符 j 或 向下箭头键(↓) 光标向下移劢一个字符 k 或 向上箭头键( ...
- April Fools Day Contest 2019 A. Thanos Sort
A. Thanos Sort time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- 搭建jumpserver堡垒机
环境 系统: CentOS 7 IP: 192.168.244.144 关闭 selinux 和防火墙 # CentOS 7 $ setenforce 0 # 可以设置配置文件永久关闭 $ syst ...
- soapui
webservice 的请求可使用工具:soapui 天气预报的接口地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsd ...
- 【BZOJ3589】动态树 树链剖分+线段树
Description 别忘了这是一棵动态树, 每时每刻都是动态的. 小明要求你在这棵树上维护两种事件 事件0: 这棵树长出了一些果子, 即某个子树中的每个节点都会长出K个果子. 事件1: 小明希望你 ...
- iOS 开发之 GCD 基础
header{font-size:1em;padding-top:1.5em;padding-bottom:1.5em} .markdown-body{overflow:hidden} .markdo ...
- 1.线性回归、Logistic回归、Softmax回归
本次回归章节的思维导图版总结已经总结完毕,但自我感觉不甚理想.不知道是模型太简单还是由于自己本身的原因,总结出来的东西感觉很少,好像知识点都覆盖上了,但乍一看,好像又什么都没有.不管怎样,算是一次尝试 ...
- 4.jQuery和DOM 对象之间的相互转换
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...