lua_自己对“lua函数”知识点的总结
lua_自己对“lua函数”知识点的总结
1.lua函数的定义
--lua中,函数都是function类型的对象。(1)其可以被比较 (2)其可以赋值给一个对象(3)可以传递给函数(4)可以从函数中返回 (5)作为table表中的键
函数的两种定义方式
(1)function 函数名 (参数) (2) 函数名 = function(参数)
函数内容 函数内容
end end
--eg:
function mathA()
print("数学你好啊")
end
mathA() --定义一个带有参数的函数
function mathAA(i)
print(i)
end
do
local ii = "数学你真的好难学"
mathAA(ii)
end
2.接收多个参数,返回任意多个值
--定义一个函数,他可以接收 任意多个参数 供其使用,一个函数可以在其结束的时候返回任意多个值
-- return 关键字的作用就是在函数中返回某些值
function 函数名 (参数)
函数内容
return 返回值
end
--eg:
function hs (a,b)
x = a*a
y = b*b
return x,y
end
i =
j =
d,c = hs(i,j)
print(d.."和"..c)
--对return关键字的使用
function ys(i)
if i == then
x = "你好啊,世界!"
y = "我很好世界!"
return x,y
else
z = "世界在向你问好"
return z
end
end
print(ys())
-- 定义一个函数,传入两个参数并相加‘相减 ’相除‘相乘’取模 ,返回他们的运算结果,并输出到屏幕上
function MathaB(a,b)
c1 = a + b
c2 = a - b
c3 = a * b
c4 = a / b
c5 = a % b
return c1,c2,c3,c4,c5
end
i =
j =
p1,p2,p3,p4,p5 = MathaB(i,j )
print(p1)
print(p2)
print(p3)
print(p4)
print(p5)
3.lua 中 函数的可变参数
function x (...) --三个点表示函数的参数的个数不确定
function x(a,b,...) --函数有两个固定的参数,其余参数不确定
x(3) --a = 3,b = nil ,arg={n=0}
x(3,4) --a = 3,b= 4 ,arg={n=0}
x(3,4,5,8) -- a=3, b=4,arg={5,8;n=2}
--定义一个函数,利用循环让这个函数能够计算 n 的阶乘
test = function(n)
local i =
if n < then --先进行一个判断
n =
end
repeat
i=n * i
n = n-
until n ==
print(i)
end
print (test())
4. select()函数
-- select()函数 作用是允许你指定从第几个返回值开始取值。
-- 此函数可以接收任意数目的参数,其中第一个参数用来决定函数的行为,
-- 当第一个参数为 "#"时,select()简单返回其余参数的个数。
-- 当第一个参数为一个数字时,select()返回其余从这个位置开始到最后一个参数
print(select("#","a","b","c")) --
print(select(,"a","b","c")) -- a b c
print(select(,"a","b","c")) -- b c
5.函数的尾调用
--当函数的最后返回结果是调用另一个函数,称之为尾调函数
--lua中在调用尾调函数时,先是弹出当前函数的栈空间,然后在调用尾调函数,非常适用函数递归调用
max_i =
function loop(i)
if i>max_i then
return i
end
i = i+
return loop(i)
end
print(loop())
6.比较杂碎的相关知识
--在 Lua 中,函数是被看作是"第一类值(First-Class Value)",函数可以存在变量里
function factorial1(n)
if n == then
return
else
return n * factorial1(n - )
end
end
print(factorial1()) --
factorial2 = factorial1 --这个地方应该是函数可以存在变量中
print(factorial2()) --
--function 可以以 “匿名函数” 的方式通过参数传递
function testFun(tab,fun)
for k,v in pairs(tab) do
print(fun(k,v))
end
end
tab = {key1="val1",key2= "val2"}
testFun(tab,function(key,val) --匿名函数
return key.."="..val
end)
--key1=val1
--key2=val2
--函数的定义以end关键字结尾 。函数中的参数是局部变量 ,在调用结束时被收回
--使用 ... 代替参数列表 ,lua会创建一个局部的名字为arg的table ,保存所有调用时传递的参数,以及参数的个数(通过arg.n获取)
function threeDice()
d1 = math.random(,)
d2 = math.random(,)
d3 = math.random(,)
d4 = math.random(,)
myTotal = d1+d2+d3+d4
return d1,d2,d3,d4,myTotal
end
print(threeDice())
lua_自己对“lua函数”知识点的总结的更多相关文章
- 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]) 功能:相当 ...
- C语言调用Lua函数
记得上学时,初中英文课本中,上网叫做surfing the internet,中文叫网上冲浪. 那个时期,人们常常称互联网为赛博空间.现在工作了,大量的零碎时间用于上微博,知乎,QQ.这些碎片化的阅读 ...
- C模块回调Lua函数的两种方法
作者:ani_di 版权所有,转载务必保留此链接 http://blog.csdn.net/ani_di C模块回调Lua函数的两种方法 lua和C通过虚拟栈这种交互方式简单而又可靠,缺点就是C做栈平 ...
- Lua函数以及闭合函数的理解
Lua函数以及闭合函数的理解 来源 http://blog.csdn.net/mydad353193052/article/details/48731467 词法域和第一类型 在C/C++,C#或者J ...
- lua函数随记
在大多数Lua语法分析中可以获得这些标准Lua函数. 无可争辩, 我们可以查阅Lua网站, 但是一些少了的函数被Blizzard进行了调整. 下面列出了所有Lua函数. WoW API中的Lua注意在 ...
- Lua 函数参数 & 默认实参
[1]Lua函数,默认实参 习惯了其他语言(如C++)的默认实参,利用Lua语言的过程中,发现没有默认实参这种机制. 所以,自己模拟了一个满足业务需求的带默认实参的函数. (1)示例如下: local ...
随机推荐
- poj 1635
有根树同构.参考论文<hash在....> #include <iostream> #include <fstream> #include <algorith ...
- 【Linux】Ubuntu 开机默认亮度改动方法
换了ubuntu 之后.发现开机屏幕都是"最大亮度",每次都要到设置中手动调节,非常麻烦.于是想到去改动这个设置.Google一通,别人可行的办法到我这就没用了.郁闷.最后是在st ...
- java调用c++ dll出现中文乱码
近期的开发用到了使用java调用本机动态连接库的功能,将文件路径通过java调用C++代码对文件进行操作. 在调用中假设路径中包括有中文字符就会出现故障.程序执行就会中止. 以下用一个小样例,来说明记 ...
- Flume 读取JMS 消息队列消息,并将消息写入HDFS
利用Apache Flume 读取JMS 消息队列消息.并将消息写入HDFS,flume agent配置例如以下: flume-agent.conf #name the components on ...
- oc50--@class1
// // main.m #import <Foundation/Foundation.h> #import "Person.h" int main(int argc, ...
- CodeForces - 789D Weird journey
D. Weird journey time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- codevs1288 埃及分数(IDA*)
1288 埃及分数 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 在古埃及,人们使用单位分数的和(形如1/a的 ...
- bzoj1606[Usaco2008 Dec]Hay For Sale 购买干草(01背包)
1606: [Usaco2008 Dec]Hay For Sale 购买干草 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1240 Solved: 9 ...
- jFinal基于maven简单的demo
JFinal 是基于Java 语言的极速 web 开发框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java语言所有优势的同时再拥有ruby.py ...
- Vue发布过程中遇到坑,以及webpack打包优化
前言 这段时间,本人自己做了一个vue画面部署到自己的服务器上,发现运行速度慢的的惊人,虽然服务器很渣(本人没什么钱,只能租最差的服务器,主要是给自己学习用的),但是这样开发出来的网站简直不能用,所以 ...