• lua|基础教程


    注释

    --单行注释
    
    --[[
    多行注释
    多行注释
    --]]
    

    变量

    • nil:无效值,比较时需要加上双引号"",对全局变量和table复制nil,等于删除它们
    • boolean:布尔值
    • number:双精度类型的实浮点数
    • string:字符串,单引号''或双引号""或[[]]
    • function:函数
    • userdata:任意存储在变量中的c数据结构
    • thread:独立线路
    • table:关联数组,索引可以是数字或字符串,{}创建一个空表,数值下标1开始

    关键字

    and    break    do    else    elseif    end    false    for
    function    if    in     local    nil    not    or    repeat
    return    then    true    until    while
    

    作用域

    默认情况下,变量都是全局的,除非显示local声明为局部变量
    尽量使用局部变量,因为1.避免命名冲突2.访问局部变量比全局变量快

    赋值

    a = "hello" .. "world"
    a,b = 10,20
    -- 这里c的值为nil
    a,b,c = 1,2 
    

    运算符

    • 与或非:and or not
    • ..:连接两个字符串
    • :一元运算符,返回字符串或表的长度

    控制流程

    1. if语句
      	local a = 10
      	if a > 10
      	then
      		print("1")
      	else
      		print("2")
      	end
      
    2. 循环语句
      	-- while循环
      	while(true)
      	do
      		print("xxx")
      	end
      	-- for循环
      	a = {"one","two","three"}
      	for i,v in ipairs(a) do
      		print(i,v)
      	end
      	-- 另一种形式
      	function f(x)
      		print("function")
      		return x*2
      	end
      	for i=1,f(5) do print(i)
      	end
      	-- 打印1 3 5
      	for i=1,5,2 dp print(i)
      	end
      	-- repeat循环
      	a = 1
      	repeat
      		print(a)
      		a = a+1
      	util(a > 15)
      

    函数

    function maximum(a)
    	local mi = 1
    	local m = a[mi]
    	for i,val in ipairs(a) do
    		if val > m then
    			mi = i
    			m = val
    		end
    	end
    	return m,mi
    end
    
    -- 可变参数
    function fwrite(fmt, ...)  ---> 固定的参数fmt
        return io.write(string.format(fmt, ...))     
    end
    
    -- 统计给定可变参数个数
    function foo(...)  
        for i = 1, select('#', ...) do  -->获取参数总数
            local arg = select(i, ...); -->读取参数
            print("arg", arg);  
        end  
    end  
    

    1. Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil。
    2. Lua table 是不固定大小的,你可以根据自己需要进行扩容。

    官方文档地址

    Lua 5.3

  • 相关阅读:
    js 能实现监听F5页面刷新子iframe 而父页面不刷新
    Thinkpad X201 Gobi2000 上电信3G网络
    【M30】代理类
    C++数组
    【M27】要求或者禁止对象产生于heap之中
    C++ delete operator做了什么事
    【M33】将非尾端类设计为抽象类
    【M32】在未来时态下发展程序
    【M34】如何在同一个程序中结合C++和C
    【M25】将构造方法和非成员方法虚化
  • 原文地址:https://www.cnblogs.com/weiweng/p/12493610.html
Copyright © 2020-2023  润新知