基础补充笔记
来源:互联网 发布:台湾 大陆电视剧 知乎 编辑:程序博客网 时间:2024/06/06 09:47
对于有多个返回值的函数,不一定所有情况下都能返回多个值。
先来看这样一种特别的情况,仍然是刚刚的mutou函数,我们这样调用:
- local a, b, c = "first", mutou("木", 25);
- print(a);
- print(b);
- print(c);
输出结果如下:
[LUA-print] first
[LUA-print] 木
[LUA-print] 25
没错,Lua的赋值语句是支持逗号表达式的(也就是用多个值给多个变量赋值),排在前面的值自然就优先赋给变量,所以变量a的值就是”first”。
不过,这不是重点~(小若:那你还说个毛线啊!)
重点是,我们把顺序调换一下,如下:
- local a, b, c = mutou("木", 25), "first";
- print(a);
- print(b);
- print(c);
输出结果会出乎大家的意料:
[LUA-print] 木
[LUA-print] first
[LUA-print] nil
没错,mutou函数的返回值变成只有一个了,这就是函数的特点之一:如果函数的调用不是在表达式的最后一个元素,则,最多只返回一个值。
多重返回值的特点2——强制返回一个值
某些情况下,我们可能会对于一个函数感到厌烦,没错,为什么你总是返回多个值?!
如果想让某个函数强制只返回一个值,可以这么做:
- local a, b = (mutou("木", 25));
- print(a);
- print(b);
输入结果如下:
[LUA-print] 木
[LUA-print] nil
我们只需要在函数调用时,把函数调用放在括号中就可以了。
2.非全局函数
又是这种看着就反人类的名词,非全局,那就是说,不是全局的函数(小若:废你个话啊!)
来看看这样的一个函数:
- local function mutou()
- end
这就是一个非全局函数,但,这么简单的东西我可不会拿出来说~
这里我想介绍一个“语法糖”,上面的mutou函数,其实相当于以下的代码:
- local mutou;
- mutou = function ()
- end
这就是我们函数的真实面貌,函数名称其实也是一个变量名而已。
所以,有时候,我们在定义函数的时候,要注意一下顺序。比如,这样的两个函数:
- local function mutou()
- print("mutou");
- return pangbai();
- end
- local function pangbai()
- print("pangbai");
- end
mutou函数里要调用pangbai函数。
在编译的时候,mutou函数是编译不过的,因为这个时候pangbai函数未定义,换句话说,pangbai变量并不存在。
只要换一个方式就可以解决这个问题了:
- local mutou;
- local pangbai;
- mutou = function ()
- print("mutou");
- return pangbai();
- end
- pangbai = function ()
- print("pangbai");
- end
- 基础补充笔记
- ASP基础部分学习笔记补充
- JavaScript基础(补充) 个人笔记
- 基础补充
- C++基础学习笔记----第一课补充(符号表)
- 补充C#基础1
- 基础补充 待续...
- c++基础补充
- Java基础补充
- C语言基础补充
- JavaScript 事件基础补充
- JAVA基础补充点
- Remoting 基础的补充
- ROS_Kinetic_20 ROS基础补充
- Swift 基础补充(1)
- java基础补充
- Java_socket通信基础补充
- java基础 细节补充
- 今天用curl在网站上抓图,出现请求超时,还有就是访问汉字和带空格的url的注意事项
- AIR 15.0 ADT 打包 compile-abc.exe 报错
- labview 隐藏控件
- PdfToSwf并显示
- Leetcode: Binary Tree Zigzag Level Order Traversal
- 基础补充笔记
- 第十周项目4 拓展 输入评委人数,给分错误重输,多次运行程序
- 【脚本】Linux Shell真是无所不能之split命令
- Linux系统下CPU频率的调整
- Android Bluetooth Low Energy(Android低功耗蓝牙)
- 【JavaScript】使用setInterval()函数作简单的轮询操作
- Unicode(UTF16)文件读写终极方案---用C++标准的字节流读取,转化为宽字符(wchar_t),再以字节流写入
- 两个变量a,b,不用判断语句,找出两个中比较大的那个变量
- 第十周项目四(2)——大奖赛计分