Lua函数

作者: IT白鸽 | 来源:发表于2018-05-28 23:20 被阅读0次

函数

在lua中,函数是对语句和表达式进行抽象的主要方法,皆可以用来处理一些特殊的工作,也可以用来计算一些值.
主要用途:
    1.完成指定的任务,函数左为语句使用
    2.计算并返回值,函数左为赋值语句的表达式使用

函数定义格式:

optional_function_scope function function_name(argument1,argument2,argument3..,argumentn)
     function_body
     return result_params_comma_separated
end

optional_function_scope:可选的指定函数是全局还是局部函数,未设置默认全局,设置局部需要关键字local
function_name:函数名称
argument1,argument2,argument3..,argumentn:函数的参数,以逗号隔开,函数可以不带参数
function_body:函数体,代码语句块
result_params_comma_separated:函数返回值,lua语言可以返回多个值,每个值逗号隔开

--判断最大的值
function max(num1,num2)
    if(num1>num2) then
        result = num1;
    else
       result = num2;
    end
    return result
end
print("两个最大的值是: ", max(10,28))
--结果:
--28

多返回值

lua函数可以返回多个结果值,例如:string.find("string.val.com","val") 其返回匹配串"开始和结束的下表" ,如果不存在返回nil

--求数组中最大的值和下标
function maximum(a)
    local mi = 1;    --最大值索引
    local m = a[mi]  --最大值
    for i,val in ipairs(a) do
        if val > m then
            mi = i
            m = val
        end
    end
    return m,mi
end
print(maximum({8,20,30,40,51,1,5}))
--结果:
--51 5

可变参数

lua函数可以接受可变数目的参数,和c语言类似,在函数参数列表中使用三点(...)表示可变

function add(...)
    local s = 0
    for i,v in ipairs{...} do
         s = s + v
    end
    return s
end
print(add(3,5,4,6));
print(add(2,3))
--结果:
--18
--5

固定可变参数

固定惨书必须放在变参数之前;

function fwrite(fmt,...)
    return io.write(string.format(fmt,...))
end
fwrite("herbie\n")
fwrite("%d %d\n",3,4)
--结果:
--herbie
--3 4

通常遍历边长的参数的时候只要使用{...},然而变长参数可能包含一些nil,那么可以用select 函数来访问变量参数
方法:
1.select('#',...) 返回可变参数的长度
2.select(n,...) 访问n到 select('#',...)的参数

注意: 调用select 时,必须传入一个固定参数selector(选择开关)和一系列变长参数,如果selector为数字n,那么select返回它第n个可变参数,否则只能为字符串"#",这样select 会返回变长的总数.

function foo(...)
    for i = 1,select('#',...) do
         local arg = select(i,...);
     print("arg",arg);
    end
end
foo(1,2,3,4);
--结果:
--arg 1
--arg 2
--arg 3
--arg 4

相关文章

  • Lua中的CAPI概述

    头文件lua.h: Lua提供的基础函数,包括创建Lua环境,调用Lua函数,读写Lua环境中的全局变量,以及注册...

  • JS函数charCodeAt的Lua实现

    JS函数charCodeAt的Lua实现 charCodeAt by Lua @(Lua JavaScript ...

  • Lua_API lua_call & lua_callk

    开篇 今天来简单了解一下 Lua 的函数调用:lua_call。 解析 函数调用协议 void lua_call ...

  • lua入门笔记 目录

    lua的中文API lua入门笔记1 类型 表达式 语句 函数lua入门笔记2 深入函数 深入函数 迭代器与泛型f...

  • lua基本函数说明

    lua函数说明 部分lua函数在lua的dash文档中没找到或者没有使用例子,特记录,备忘; getfenv(f)...

  • C Lua API-栈

    简介 C API 是一组能使用C代码与Lua交互的函数。其中包括读写Lua全局变量、调Lua函数、运行一段Lua代...

  • tolua调用c#函数及变量

    比如说你要调用一个lua函数 但你想把自身传给lua函数让这个函数调用c# 类的其他函数以及变量 首先是调用lua...

  • 函数

    Lua 函数 在Lua中,函数是对语句和表达式进行抽象的主要方法 Lua 提供了许多的内建函数,你可以很方便的在程...

  • Lua笔记--function

    Lua笔记--Function 函数定义 函数调用 省略括号 Lua函数调用其中有一个比较特别的地方:当函数只有一...

  • Lua 快速笔记(二) syntax

    参考programing in lua 语法 函数 常用函数 语法 局部变量和代码块 控制语句 Lua 认为 fa...

网友评论

    本文标题:Lua函数

    本文链接:https://www.haomeiwen.com/subject/idfnjftx.html