zoukankan      html  css  js  c++  java
  • lua 语言基础

    1.数据类型

     string(字符串)

    ·运算符“+、-、*、/”等操作字符串,lua会尝试讲字符串转换为数字后操作;

      

    ·字符串连接用“..”运算符

    ·用“#”来计算字符串的长度(放在字符串前面)

    ·字符串的相关操作以及格式化操作

    Table(表)

    ·表的初始化:

    Loacl tbl1 = {};

    Local tbl2 = {“apple”,”pear”,”orange”,grape};

    ·lua 的数组的默认初始索引一般从 1 开始

    ·table 不会固定长度大小,有新数据时table会自动增长,未初始化的table都是nil;

    Function(函数)

    ·Lua中,函数被看做是“第一类值(first-class Vaule)”,可以存在变量里

    ·function可以通过匿名函数的方式通过参数传递

     

    此时 函数testFun再传参的过程中 匿名函数  被执行  实际穿的参数为 匿名函数的返回值

     

     thread(线程)

    ·在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。

    线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。

    协程:当钱运行的代码可以看作运行在主协程中(就像C程序中的main运行在主线程中),通过create可以创建一个协程,resume以运行此协程,直到新协程调用yield程序才能返回到“主协程”中进行

    Userdata(自定义类型)

    ·用于表示一种应用程序或C/C++语言库所创建的类型,可以将任意C/C++的任意数据类型的数据(一般来说是struct和指针)储存到lua变量中调用。

    赋值语句

    ·Lua可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。

    Eg:  

    a,b  =  10,2*x;  <-->       a=10; b=2*x

    ·遇到赋值语句Lua会先计算右边所有的值然后再执行赋值操作,所以我们可以这样进行交换变量的值:

    Eg

    x, y = y, x                     -- swap 'x' for 'y'

    a[i], a[j] = a[j], a[i]         -- swap 'a[i]' for 'a[j]'

    ·当变量个数和值的个数不一致时,Lua会一直以变量个数为基础采取以下策略:

    a. 变量个数 > 值的个数             按变量个数补足nil

    b. 变量个数 < 值的个数             多余的值会被忽略.

    ·如果要对多个变量赋值必须依次对每个变量赋值。

    Ega,b,c = 0,0,0;

    a, b = f()  -- f()如果返回两个值第一个给a,第二个给b

     ·访问局部变量比访问全局变量要快

    Table的索引

    ·当索引为字符串类型时可以简化:tab[“key”]  <--> tab.key

    Lua循环

    1.数值循环

    for var=exp1,exp2,exp3 do  

        <执行体>  

    end  

    Var exp1变化到exp2   每次变化以exp3为步长递增,并执行一次执行体

    exp3 可以省略  如果省略默认值为 1  

    1.泛型循环

    a = {"one", "two", "three"}

    for i, v in ipairs(a) do

        print(i, v)

    end

    ipairs迭代器和pairs迭代器:

    pairs可以遍历表中所有的key并且除了迭代器本身以及遍历表本身还可以返回nil;

    但是ipairs则不能返回nil,只能返回数字0,如果遇到nil则退出

    2.Lua repeat...until 循环

    repeat

       statements

    until( condition )

     --  执行......直到

    Lua 流程控制

    If  条件语句1   then

    执行语句1

    else if  条件语句2  then

    执行语句2

    Else

    执行语句3

    End

    Lua函数特征

     

    ·多返回值

    ·可变参数

    Lua函数可以接受可变数目的蚕食,和C类似,在函数参数列表中使用三点...表示函数有可变的参数

    可以通过select(“#”,...)来取可变参数的数量

    可以通过select(n,...)来访问第n个可变参数(如果n大于参数数量则返回nil)

    如果是固定参数加可变参数     固定参数必须在可变参数之前

    Lua运算符

    · ~=  不等于

    ·and  逻辑与

    ·or   逻辑或

    ·not  逻辑非

  • 相关阅读:
    strcpy和memcpy的区别《转载》
    C++数组引用
    关于C++中继承、重载、掩盖 《转载》
    对于js原型和原型链继承的简单理解(第三种,复制继承)
    对于js原型和原型链继承的简单理解(第二种,对象冒充)
    腾讯的一道js面试题(原型)
    面试题,自己写写dome总是好的
    对于js原型和原型链继承的简单理解(第一种,原型链继承)
    html+css布局小练习w3cfuns
    C#泛型列表List<T>基本用法总结
  • 原文地址:https://www.cnblogs.com/kpxy/p/10013539.html
Copyright © 2011-2022 走看看