• Lua 初学者随笔 一


    1. 关于return

    function test(a, b)
        print("Hello")
        return 
        print("World")
    end
    
    --call the function
    test(1, 2);
    
    --[[output
    Hello 
    World
    ]]

    奇怪之处:

    ①Lua关于return语句放置的位置:return用来从函数返回结果,当一个函数自然结束结尾会的一个默认的return。Lua语法要求return只能出现在block的结尾一句(也就是说:任务chunk的最后一句,或者在end之前,或者else前,或until前),但是在本程序中竟然没有报错

    ②当执行return后,函数应该返回了,也就是说,上述程序本应该只输出Hello,然后函数就应当结束,不会再输出world,但是本程序确实Hello和world都输出了。

    ③若是return后面紧跟一个返回值,该程序就正常报错了,符合了Lua语法要求return只能出现在block的结尾一句。

    function test(a, b)
     print("Hello")
     return 1
     print("World")
    end
    
    --call the function
    test(1, 2);
    --[[error: 
    lua: hello.lua:4: 'end' expected (to close 'function' at line 1) near 'print'
    ]]

    2. 关于返回不定参数

    function newtable(...)
    return(...) -- error
    end
    tb1=newtable("a","v","c")
    for i=1,#tb1 do 
    print (i,tb1[i])
    end 

    return(...) 由于加了括号,只能返回第一个值,其它的值被忽略了
    正确的做法是:return{...}

    3.select函数

    function printargs(...)
    local num_args=select("#", ...)
        for i=1 ,num_args do 
            local arg=select(i, ...)
            print (i,arg)
       end
    end
    printargs("a","b",3,"d")

    select (index, ···)

    If index is a number, returns all arguments after argument number index. Otherwise, index must be the string "#", and select returns the total number of extra arguments it received.

    4.

  • 相关阅读:
    Linux下绑定网卡的操作记录
    迭代器、生成器、装饰器
    python二模块之装饰器
    python实现 --工资管理系统
    投票接口压测
    Mysql exists和in
    Django处理一个请求的过程
    快速排序 Python实现
    宿主机访问ubuntu虚拟机内的Django应用,访问不到的解决办法
    四、Git分支管理
  • 原文地址:https://www.cnblogs.com/blankqdb/p/2966986.html
Copyright © 2020-2023  润新知