3.lua学习笔记:类型与值

lua内置8种类型:nil,  boolean,  number,  string,  userdata,   function,   thread,   table 

nil:
    nil只与nil相等,所有全局变量的默认值为nil, 将nil赋值给变量相当于将变量删除

boolean:
    boolean 只有两值,true, false;在条件判断中除了 false/nil被认为是false外,其余都被认为是true, 0也是true

number:
    number类型用于表示实数,lua中没有整形类型,所有number不会进行四舍五入
    a % b == a - math.floor(a/b) * b
    这样就能 保证求与的结果很b的正负号一致,在lua中,所有数字类型都是double,所以a/b的结果也是double,
    求与是因为经过数学函数处理,才得到整数的。数学库:math

string:
    lua的字符串值是不可变的,使用单引号或双引号引用,可以包含C语言中的转义字符,跨行字符串用 [[  ]]来引用
    print(type(a)) 可以打印a的类型,type()函数的返回值是字符串
    字符串连接操作符 ..
    print("hello".."world")  -->hello world
    print(1..0)                      -->10
     字符串连接操作符遇到任何参数为数字,都把它转换为字符串

table:
    Lua中,你可以用任意类型的来作数组的索引,但这个值不能是 nil同样, 你也可以用任意类型的值来作数组的内容,nil也可以
  注意三点: 
    第一,所有元素之间,总是用逗号 "" 隔开;
    第二,所有索引值都需要用 "[""]" 括起来;如果是字符串,还可以去掉引号和中括号; 即如果没有[]括起,则认为是字符串索引
    第三,如果不写索引,则索引就会被认为是数字,并按顺序自动从 1往后编;
    days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}
     默认索引是从1开始的:
    print(days[1])              ---Sunday
    print(days[#days])      ---Saturday,    #days表示table连续索引的最大值,不包含非连续值
    
    a = {"x","y"}    -- a = {[1]="x",   [2]="y"}
    a.x = 10          --  a["x"] = 10              #通过for k, v in pairs(a) do ... end  来遍历准确些

    a = {}; b = {}
    print(a == b)   -- false
    a = {] ; b = a
    print(a == b)   --true

    通过table来实现链表:
    list = nil
    for  line in io.lines() do
            list = {next=list, value=line}
    end
    遍历:
    tmp = list
    while  tmp do
            print(tmp.value)
            tmp = tmp.next
    end
    上面的例子有教学意义,但是实际很少用到
table类型可以嵌套, tmp = {{"a","b"}, "x0", "y"}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值