zoukankan      html  css  js  c++  java
  • Lua学习之类型与值

    Lua是一种动态语言,在语言中没有类型定义的语法。

    在lua中有8中基本的类型:

    1.nil(空)

    2.boolean

    3.number(数字)

    4.string(字符串)

    5.userdata(自定义类型)

    6.function(函数)

    7.thread(线程)

    8.table(表)

    函数type可根据一个值返回类型的名称。

    print(type("Hello world")) ------------->string

    由于变量是没有预定义类型的,所以

    a = 10;
    
    print(type(a)); --------------------->number
    
    a = print;        ------------------------>注意这个是合法的
    
    print(type(a)); ----------------------->function

    这里我们重点来看下string类型

    Lua的字符串是不可变的值,如果修改只能创建一个新的字符串:

    a = "one";
    b = string.gsub(a,"one","two");
    print(a);-------------->one
    print(b);-------------->two

    Lua的字符串和其他Lua对象一样,都是采用自动内存管理机制所管理的对象。

    另外还可以用一对匹配的双方括号来界定一个字母字符串,这样就可以延伸多行,但Lua不会解释其中的转义字符。

    如:

    page = [[
    <html>
    <head>
    </head>
    </html>
    ]]
    write(page);

    Lua提供了运行时数字和字符串自动转换。

    print("20"+1); ------------------>21
    print("Hello"+2);---------------->错误

    相反,Lua也可以将字符串转换成一个数字

    print(10 .. 20);------------------>1020

    在Lua中 .. 表示字符串连接操作符。

    接着我们来看看table类型

    a = {};------------------->创建一个table,并引用到变量a中

    for i=1,1000 do a[i] = i * 2 end;

    print(a[9];) -------------------->18

    print(a["x"]);-------------------->nil

    我们还可以将a["x"]写成a.x,但是注意a.x与a["x"]的区别。

    长度操作符“#”用于返回一个数组或者线性表的最后一个索引,我们可以用他来干很多有意义的事情

    遍历table:

    for i=1,#a do

      print(a[i]);

    end

    删除最后一个元素:

    a[#a] = nil;

    末尾添加元素:

    a[#a+1] = v;

    当一个数组中间有空隙也就是说有元素是nil,那么#就认为这个空元素是数组结束的标志。

    如果真的需要处理那些有空隙的数组,那么就需要用到函数table.maxn,它将放回数组的最大索引的元素。

    a = {};

    a[10000]  = 1;

    print(table.maxn(a)); ---------------->10000

    接下来我们来看下Lua里面的function函数

    lua语言中的函数可以存储在变量中,可以通过参数来传递给其他函数,好可以作为其他函数的返回值。

    Lua既可以调用自身的函数,也可以调用c语言的函数。

    userdata和thread

    userdata用于表示一种由应用程序或者c语言库所创建的新类型。

  • 相关阅读:
    java位运算
    java笔试题(面试题)系列之一
    Java数据类型转换总结
    ++a和a++
    Java IO
    Java 并发
    Java位运算及补码存储
    Redis 5.0.0安装部署(伪集群版)
    Redis 安装(单机版)
    Dubbo源码分析系列之【服务暴露】
  • 原文地址:https://www.cnblogs.com/CaomaoUnity3d/p/4609084.html
Copyright © 2011-2022 走看看