lua语言-《lua程序设计》1~5章基础学习

由于openwrt的web,不得不看lua语法,《lua程序设计》一书讲的很详细基础,比较易懂,以下为重点记录。

1.注释与取消注释
    添加注释
    --[[
    print("hello world")
    --]] 
    取消注释只要加“-”即可
    ---[[
    print("hello world")
    --]]    
2.lua中的字符串是不可变的值,不能像c语言那样直接修改字符串的某个字符
3.lua中的table类型实现关联数组,也就是具有特殊索引方式的数组,除了整数,还可以用字符串等方式  
  由构造表达式完成,最简单的构造表达式是{} 
    a = {} --创建一个table,并将它的引用存储到a
    k = "x"
    a[k] = 10   --新条目,key=“x”,value=10
    a[20] = "great" --新条目,key=20,value=“great”
    a.x = 10    --等同于a["x"] = 10,以字符串索引打牌table
4.虽然可以任何数字作为table的索引起始值,但lua的习惯,通常以1作为索引起始值
5.使用tonumber()可以显示转为为整数
6.lua的函数很有特色
    可以存储在变量中
    可以作为参数
    可以程序重新定义这个函数    
    可以返回多个结果
    可以嵌套在函数中
7.repeat..until语句的使用相当于c中的do..while(条件) 
  注意:一个声明在循环体中的局部变量作用域包括条件测试
8.数字型for(numeric for)
  语法如下:
    for var=exp1,exp2,exp3 do
    <执行体>
    end
    var从exp变化到exp2,exp3为可选的,作用是指定步长,如果不指定,默认为1
9.泛型for(generic for)
    通过迭代器函数遍历所有值,不应该对循环遍历赋值
    语法如下: --打印数组a的所有值
    for i,v in ipairs(a) do print(v) end
    lua基础库提供遍历数组的迭代器函数ipairs(),i被赋予索引值,V被赋予该索引的数组元素值
    标准库提供的迭代器:
        迭代文件中的每行:io.lines
        迭代table的元素:pairs
        迭代数组的元素:ipairs
        迭代字符串的单词:string.gmatch
10.函数专讲
 一个函数若只有一个参数,并且此参是字符串或table构造式,()可有可无
     print "hello word"  相当于  print("hello word")
     f{x=10,y=20}  相当于 f({x=10,y=20}) 
 面向对象式的调用,冒号操作符
     o.foo(o,x) 另一中写法是 o:foo(x),o隐式的作为函数的第一个参数
 调用函数时提供的实参数量可以与形参数量不同,lua自动调整实参数量匹配参数表要求
 函数具有变长参数,使用表达式"...",表示接受不同数量的实参
    示例;
    function add(...)
        local s=0
        for i,v in ipairs{...} do
            s=s+v
        end
        return s
    end
    print(add(3,4,10,25,12))
    注1.多值恒等式函数:function id(...) return ... end2.select("#",...);返回所有变长参数的总和,其中包括nil

 具名实参:通过名称来指定实参
    实现是将实参组织搭配一个table中,并将这个table作为唯一的实参传给函数,上面讲了,实参
    只有一个table构造式,函数调用的圆括号"()"可有可无。所以可以写成如下示例:
    os.rename{old="temp.lua",new="temp1.lua"}   --os.rename()的作用是重命名

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值