zoukankan      html  css  js  c++  java
  • Learning Lua Programming (2) Lua编程基础


    开始学习Lua编程,首先从一些简单的语法开始。

    一、编辑环境

    下面推荐一个Lua编程的IDE,感觉是很强大的。ZeroBrane Studio,windows平台,mac平台都有。点击打开链接  官方下载地址


    二、开始一些简单的编程(代码参考自http://blog.csdn.net/xiaominghimi/article/details/8770395的例子)

    具体语法参考我的上一篇(转载)博客


    -- 单行注释语句
     
    --[[  
    注释段落语句
      ]]
     
    --引用其他lua文件,不需要加上(.lua)后缀
    --require "xx"
     
    --变量不需要定义,可以直接赋值
    count = 100  --成员变量
    local count =100  --局部变量
     
    --方法定义
    function hello(...)
        --打印
        print("Hello Lua!");
        print(string.format(...))
    end
    
    -- 每一行代码不需要使用分隔符,当然也可以加上
    -- 访问没有初始化的变量,lua默认返回nil
     
    -- 调用函数形式
    hello("你懂的")
    
    --输出:
    --Hello Lua!
    --你懂的 
     
    --打印变量的类型
    isOK =false
    print(type(isOK))
    
    --输出:
    --boolean
     
    -- 基本变量类型
    a =nil --Lua 中值为nil 相当于删除
    b =10
    c =10.4
    d =false
    --定义字符串,单引号,双引号都可以的
    e ="i am"
    d ='himi'
     
    --两个字符串的连接可以如下形式
    stringA ="Hi"
    stringB ="mi"
    --可以用".."符号,连接两个字符串
    print(stringA..stringB)
    
    --输出:
    --Himi
     
    --另外Lua也支持转移字符,如下
    print(stringA.."
    "..stringB);
     
    --输出:
    --Hi
    --mi
    
    --修改字符串的部分gsub,可以如下形式:(将stringA字符串中的Hi修改为WT)
    stringA=string.gsub(stringA,"Hi","WT")
    print(stringA);
    
    --输出:
    --WT
     
    --将字符换成数字tonumber(不转也会自动转)
    --将数字换成字符tostring(不转也会自动转)
    stringC = "100"
    stringC = tonumber(stringC)
    stringC = stringC +20
    stringC = tostring(stringC)
    print(stringC)
    
    --输出:
    --120
     
    --取一个字符串的长度使用 #
    print(#stringC)
    
    --输出:
    --3
    
    --创建 表
    tableA ={}
    m = "x"
    tableA[m] =100
    m2 ='y'
    tableA[m2] =200
    print(tableA["x"].."
    "..tableA.y)
    
    --输出:
    --100
    --200
    
    --另外表还可以如下形式(从1开始)
    tableB ={"4","5","6","7","8"}
    print(tableB[1])
    
    --输出:
    --4
     
    --算术操作符
    c1 = 10+2
    c2 = 10-2
    c3 = 10*2
    c4 = 10/2
    c5 = 10^2
    c6 = 10%2
    c7 = -10+2
    print(c1.."_"..c2.."_"..c3.."_"..c4.."_"..c5.."_"..c6.."_"..c7)
    
    --输出:
    --12_8_20_5_100_0_-8
    
    --控制操作
    --if then elseif then else end
    abc =10
    if  abc ==10 then
        print("v1")
    elseif abc == 9 then
        print("v2")
    else
        print("v3")
    end
    
    --输出:
    --v1
    
    
     
    --for 变量=初值, 终点值, 步进 do ... end
    --从4(第一个参数)涨到10(第二个参数),每次增长以2(第三个参数)为单位
    for i=4,10,2 do
        print("for1:"..i+1)
    end
    
    --[[输出:
    for1:5
    for1:7
    for1:9
    for1:11
    ]]
    
    --也可以不制定最后一个参数,默认1的增长速度
    for i=4,10 do
        print("for2:"..i+1)
    end
    
    --[[输出:
    for2:5
    for2:6
    for2:7
    for2:8
    for2:9
    for2:10
    for2:11
    ]]
     
    tableFor = {"himi1","himi2","himi3","himi4","himi5"}
    for k,v in pairs(tableFor) do
        print("for3:key:"..k.."value:"..v)
    end
    
    --[[输出:
    for3:key:1value:himi1
    for3:key:2value:himi2
    for3:key:3value:himi3
    for3:key:4value:himi4
    for3:key:5value:himi5
    ]]
     
    --while
    
    w1 = 20
    while true do
        w1=w1+1
        if w1 ==25 then
            break
        end
    end
    print("while:"..w1)
     
    --输出:
    --while:25
    
    --repeat
    
        aa =20
        repeat aa = aa+2
            print("repeat:"..aa)
        until aa>28
    
    --[[输出:
    repeat:22
    repeat:24
    repeat:26
    repeat:28
    repeat:30
    ]]
     
    --关系操作符
    --需要注意的是不等于符号 ~=  而不是!=
    ax =10
    bx =20
     
    if ax >bx then
        print("GX1")
    elseif ax<bx then
        print("GX2")
    elseif ax>=bx then
        print("GX3")
    elseif ax<=bx then
        print("GX4")
    elseif ax==bx then
        print("GX5")
    elseif ax~=bx then
        print("GX6")
    else
        print("GX7")
    end
    
    --输出:
    --GX2


    --函数详解
     
    --有一个返回值的函数
    function funTestBackOne(aCount)
        local aCount= aCount+1
        return aCount
    end
     
    a =20
    print(funTestBackOne(a))
     
    --有多个返回值的函数
    function funTestBackMore()
        return 2,3
    end
     
    a,b =funTestBackMore()
    print(a.." and "..b)
     
    --有变长参数的函数
    function funTestUnKnow(...)
        print(...)
    end
    funTestUnKnow(a,b,"Himi")
    
    
    --闭合函数(一个函数写在另外一个函数内)
    function funTest1( ... )
        local d = 12;
        d=d+...
        function funTest2( ... )
            print(d)
        end
        funTest2()
    end
     
    funTest1(100)
    
    
    --[[ print:
    21
    2 and 3
    2	3	Himi
    112
    ]]


    这些都是简单的基础,大致入门的语法吧。

  • 相关阅读:
    solr的安装
    数据导出/下载
    在realm中动态查询用户的权限&角色
    总结权限控制方式 ----------(2)
    shiro 权限过滤器 -------(1)
    NoSession问题
    hibernate中对象的3种状态----瞬时态、持久态、脱管态
    BaseAction 使用
    分页工具类 BaseAction
    2019-2020-1 20175316 《信息安全系统设计基础》第1-2周学习总结
  • 原文地址:https://www.cnblogs.com/james1207/p/3265219.html
Copyright © 2011-2022 走看看