lua 函数基础
函数定义在前,调用在后
如果函数只有一个实参,并且此参数是一个字面字符串或者table构造式,那么可以省略()
例如
print "hello"
unpack{1,2}
print [[ a multi
line]]
argument 与parameter对应
实参多余形参,舍弃多余的实参
少于形参,赋值为nil
和多重赋值很像
a,b=b,a,先计算右边,交换两个变量值
多重返回值
运用到了多重赋值
function f() end--无返回值,但是也等于返回nil,占有一个位置
function f1() return "a" end --一个返回值
function f2() return "a","b" end --返回两个结果
多重返回值分为以下几种情况:
1.作为单独语句,丢弃所有返回值
例如 f2()
2.作为表达式多个元素的非最后一个元素
只保留第一个返回值
3.作为表达式最后一个元素或者仅有一个元素
获得所有返回值
而表达式分为以下几种:
1.多重赋值
x,y=f2(),"c"--x="a",y="c",只保留第一个"a"
x,y=f2()--x="a",y="b",仅有一个元素
x,y,z="c",f2()--保留全部,因为是最后一个元素
x,y=f(),"c","d"--x=nil,y="c",因为无返回值也占用一个nil
2.函数调用传入实参列表
函数调用作为最后一个实参,所有返回值传进去
print(f2()) --a b
作为非最后一个参数,保留第一个
print(f2(),"c") --a c
3.table构造式
t={f2()} --所有的参数
t={f2(),"c"} a,c
4.return语句
return f2() --返回所有
5.其他
放在一个圆括号中,迫使只返回一个结果
print(( f2() ))
f2()..1--返回a1
变长参数
但变长参数中有nil的时候可以考虑select
function _test(...)
local count=select("#",...)
for i=,count do
v=select(i,...)--注意用多重赋值只取第一个值
-- print(i,count,select(i,...))
print(i,v)
end
end _test(,, )
具名实参
function rename(arg)
print(arg.old,arg.new)
end rename{old="temp.txt",new="temp1.txt"}
rename({old="temp.txt",new="temp1.txt"})
lua 函数基础的更多相关文章
- Lua语法基础(2)--基本语法、函数
上一篇编辑编辑着,发现,缩进出了问题.作为一个不是强迫症的人,实在是忍受不了同一级内容不同缩进方式的槽点,于是重开一篇吧.(万幸,这样的文章也只有我自己看.) 第四 基本语法 赋值语句,Lua可以对多 ...
- Lua函数以及闭合函数的理解
Lua函数以及闭合函数的理解 来源 http://blog.csdn.net/mydad353193052/article/details/48731467 词法域和第一类型 在C/C++,C#或者J ...
- cocos2d-x 3.0 在C++中调用lua函数
代码用的是<cocos2d-x 3.0 在lua中调用自定义类>中的代码. 在上篇的基础上进行扩充. 写lua函数 local function process_packet(user_d ...
- Cocos2d-x-Lua (2.x)脚本开发之 Lua语言基础
从今天開始,往后将陆续更新Lua教程,主要是搭载Cocos2dx ,有不论什么疑惑或者不正确的地方.尽情指正.交流.探讨. 那么首先肯定是Lua语言基础的知识点.以下直接附上代码,凝视已经非常清楚.无 ...
- 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数
[源码下载] 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函 ...
- C中调用Lua函数
我们先来看一个简单的例子: lua_State* L = NULL; // 内部调用lua函数 double f(double x, double y) { double z; lua_getglob ...
- Lua函数之二
Lua函数之二 Lua中函数的两个重要特性: 1.函数和其他类型(如number.string)一样,可以存放在变量中,也可以存放在table中,可以作为函数的参数,还可以作为函数的返回值. 2.嵌套 ...
- Lua函数之一
LUA函数之一 函数声明: function foo(arguments) statements end 1.函数调用 调用函数的时候,如果参数列表为空,必须使用()表明是函数调用,例如: os.da ...
- 一些LUA函数(转载)
转自http://hi.baidu.com/chevallet/item/9a3a6410c20d929198ce3363 一些LUA函数 1.assert (v [, message]) 功能:相当 ...
随机推荐
- win7 "com surrogate“ 已停止工作的解决办法
1.在文件夹选项里选“始终显示图标,从不显示缩略图”. 2.数据执行保护(DEB),依次打开:计算机——属性——高级系统设置——高级——性能——设置——数据执行保护 选下面的单选按钮“为除下列选定程序 ...
- 副本死亡传送(_instance_die_tele)
玩家在副本中死亡时,将传送至对应的坐标 mapId 副本地图ID posId 坐标ID,对应_postion中posId
- 【UOJ】【BZOJ】 [Zjoi2016]小星星
题目链接: http://uoj.ac/problem/185 http://www.lydsy.com/JudgeOnline/problem.php?id=4455 考虑枚举原图中我选择哪一些点, ...
- python+win32+ie浏览器操作 TypeError: getElementById() takes exactly 1 argument (2 given)
使用body操作 # -*- coding:UTF- -*- import win32com.client from time import sleep second=win32com.client. ...
- c代码,输出i,j,k互不相同的三位数
#include <stdio.h> int main() { int i,j,k; printf("\n"); for(i=1;i<5;i++){ for(j= ...
- Algorithm 算法基础知识(未完成
基础概念不讲,记录课上关键部分 时间复杂度(Time Complexity) 算法所需要花的时间 比较时间复杂度(主要看问题的规模) 时间频度(算法执行次数)T(n)和T(n1),如果两个时间频度为等 ...
- 力扣(LeetCode)219. 存在重复元素 II
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k. 示例 1: 输入: nums = ...
- JS中innerHTML、outerHTML、innerText 、outerText、value的区别与联系?jQuery中的text()、html()和val()
一.JS中innerHTML.outerHTML.innerText .outerText.value的区别与联系?jS中设置或者获取所选内容的值:①innerHTML :属性设置或返回该标签内的HT ...
- gdb 的 symbos 加载详情(set verbose on)
http://stackoverflow.com/questions/10000335/how-to-use-debug-version-of-libc 两个重要参数 set verbose on d ...
- [Spring] Aspect Oriented Programming with Spring | AOP | 切面 | 切点
使用Spring面向切面编程 1.介绍 AOP是OOP的补充,提供了另一种关于程序结构的思路. OOP的模块化的关键单位是 类 . AOP的则是aspect切面. AOP 将程序的逻辑分成独立的块(叫 ...