• lua快速入门


    lua作为很好的嵌入式语言可以非常好的作为c/c++补充,在游戏行业是得到了广泛的应用

    一直在思考,能不能把他引入商业领域的规则语言呢?将业务规则经常变的部分提炼出来,

    而无须重新编译程序。作为规则引擎的角色进行使用

    使用前当然得安装一下去http://www.lua.org/下载一个 Lua_v5.1.4.23.exe安装,装完之后执行

    可以用 lua.exe逐行解释的方式,或者写完脚本用lExecutor.wlua执行

    1)先来个helloworld

    > print 'helloWorld'
    helloWorld
    > print("helloWorld") --注释是这么写的!
    helloWorld
    > a='hello'
    > print(a)
    hello

    2)主要类型

    > a=1
    > b="abc"
    > c={}
    > d=print
    >
    > print(type(a))
    number
    > print(type(b))
    string
    > print(type(c))
    table
    > print(type(d))
    function
    >

      如上所示,lua主要有四种类型,即数字,字符串,table(其实理解可以理解为javascript的object),以及函数类型,

    当然了,还有最常的bool型了,true以及false,(这里不考虑nil,以及userdata,thread等)

    函数类型的变量,加上"() "即可以执行,如

    > d(b)
    abc

     3)变量及常量,字符串

    > a,b,c,d = 1,2,'c',{1}
    > print (a,b,c,d)
    1       2       c       table: 0041BC58
    > a="single 'quoted' string and double \"quoted\" string inside"
    > b='single \'quoted\' string and double "quoted" string inside'
    > c= [[ multiple line
    >> with'single'
    >> and "double" quoted strings inside.
    ]]
    >
    > print(a)
    single 
    'quoted' string and double "quoted" string inside
    > print(b)
    single 
    'quoted' string and double "quoted" string inside
    > print(c)
     multiple line
    with
    'single'
    and "double" quoted strings inside.
    > a=a.."看我给接上"  --字符串用两个..可以进行连接
    > print(a)
    single 
    'quoted' string and double "quoted" string inside看我给接上

    我们关注一下lua比较特别的地方

    • 声明变量及给变量赋值的时候,可以多变量一起赋值
    • 字符串常量可以用双引号及单引号,并且混用的时候无须转义字符,跟php有点类型,还可以用"[[]]"括起来,
      这一点类似于c#里面字符串可以加上@符号,可以保留字符串内的格式

     4)逻辑控制语句

    > a=10 --逻辑控制语句就不费口舌了,反正就这几个词,跟pl/sql有点像
    > if a==10 then
    >> print("我是10")
    >> elseif a== 11 then
    >> print("我是11")
    >> else
    >> print("我是水户洋平等等")
    >> end
    我是10

    5)循环结构

    循环结构

    6)函数及其使用

    > --1.先来个最简单的
    > function myFunc1()
    >>      print("hello function")
    >> end
    > myFunc1()
    hello 
    function
    > --2.再来个带参数的
    > a=1
    > b=2
    > function myFunc2(par1,par2)
    >>      return par1+par2
    >> end
    > c=myFunc2(a,b)
    > print(c)
    3
    > --3.甚至可以返回多个变量
    > a=1
    > b=2
    > function myFunc3(A,B)
    >>      return B,A
    >> end
    > c = myFunc3(a,b) --c会等于返回的第一个,在此倒转过来即为2
    > print(c)
    2
    > c,d=myFunc3(a,b) --当然如果给多个变量赋值就没有问题了
    > print(c,d)
    2       1
    > print(myFunc3(a,b)) --直接打印就把所有打印出来
    2       1
    > --4.还可以是变参
    > function myFunc4()
    >> print()
    >> end
    > myFunc4(a,b,c,d)
    1       2       2       1

     7)table(我觉得理解object也可以)的使用

    > linbc={} 
    > linbc.sex = ""
    > linbc.age = 27
    > print(linbc,linbc.sex,linbc["age"])
    table: 0041ED50 男      
    27
    > A=linbc
    > print(A["sex"])

    > print(A)  --引用类型,看A以及linbc内存地址是一样的
    table: 0041ED50
    >  --瞧这用法,跟javascript的用法基本相当
    >  --其实还可以理解为hashmap似的键值对
    > for i,v in pairs(linbc) do
    >>    print(i,v)
    >> end
    age     
    27
    sex     男
    >  --也可以作为数组,下标是从1开始的喔
    > arr={1,2,3,"a",'b',linbc}
    > for i,v in pairs(arr) do
    >>    print(i,v)
    >> end
    1       1
    2       2
    3       3
    4       a
    5       b
    6       table: 0041ED50
    >  --既然作为数组吧,那肯定是可以增加记录的吧
    > table.insert(arr,A)
    > table.foreach(arr,function(i,v) print(v) end)
    1
    2
    3
    a
    b
    table: 0041ED50
    table: 0041ED50
    > --瞧上面,可以foreach,还可以用匿名函数喔
    > --当然也可以用下标访问了
    > print(arr[1])
    1
    > --调用table.insert会自动给增加下标,如
    > table.insert(linbc,"hello")
    > print(arr[1])
    1

    基本上lua是一门比较简洁的语言,感觉跟javascript like 80%,很轻量级

  • 相关阅读:
    matlab 修改窗口logo 使用Javaframe
    matlab guide 开发心得
    判断两个集合的包含关系
    xaml 中 引用嵌套类的对象
    xaml中显示 “大括号左边” 文本
    步进电机脉冲与毫米
    最短路径:Dijkstra算法 C#
    JPA自定义sql的三种方式
    double相乘少一分的问题,BigDecimal参数传小数也会出问题
    String类小知识
  • 原文地址:https://www.cnblogs.com/linbc/p/1494622.html
Copyright © 2020-2023  润新知