2017年12月26日星期二

lua基础语法回顾

1.lua 数据类型

数据类型描述
nil这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。
boolean包含两个值:false和true。
number表示双精度类型的实浮点数
string字符串由一对双引号或单引号来表示
function由 C 或 Lua 编写的函数
userdata表示任意存储在变量中的C数据结构
thread表示执行的独立线路,用于执行协同程序
tableLua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。
可以用type测试给定的变量或值的类型


1.1 nil
nil类型表示一种没有任何有效值,他只有一个nil值
nil还有删除作用,给全局变量或table里变量赋一个nil值,就等同于删掉他
tab1 = {key1 = "val1", key2 = "val2", "val3"}
for k, v in pairs(tab1) do
    print(k..'-'..v)
end

tab1.key1 = nil
for k, v in pairs(tab1) do
    print(k..'-'..v)
end

.. 用于连接字符串

1.2 boolean(true, false)

1.3 number(number类型-double双精度)【2, 2.2, 0.2...】

 1.4 string(字符串)
string1 = "this is string1"
html = [[
<html>
<head></head>
<body>
    <a href="http://www.baidu.com">百度</a>
</body>
</html>
]]
print(html)

#string1 用于测试字符串长度

1.5 table
-- 创建一个空的table
local tbl1 = {}
-- 直接初始表
local tbl2 = {"apple", "pear", "orange", "grape"}

1.6 function
function factorial1(n)
    if n == 0 then
         return 1
    else
         return  n* factorial1(n-1)
    end
end

print(factorial1(5))
factorial2 = factorial1
print(factorial2(5))

function 可以以匿名函数的方式传递参数
function testFun(tab,fun)
    for k, v in pairs(tab) do
        print(fun(k,v));
    end
end

tab={key1="val1",key2="val2"};
testFun(tab,
function(key,val)--匿名函数
    return key.."="..val;
end
);

2.  lua 变量
2.1 变量在使用前,必须在代码中进行声明,即创建改变量
a = 5 --全局变量
local b = 5 --局部变量

function joke()
    c = 5
    local d = 6
end

2.2 赋值变量
a = "hello" .. "world"
t.n = t.n + 1

多个变量同事赋值
a, b = 10, 2*x

交换变量的值
x, y = y, x
a[i], a[j] = a[j], a[i]


3. 循环
3.1 while循环
while(condition)
do
    statements
end

eg1,
a = 10
while(a < 20)
do
    print("a的值为:", a)
    a = a+1
end


3.2 for 循环
for循环分为数值for循环和泛型for循环
3.2.1 数值for循环
for var=exp1,exp2,exp3 do
    <执行体>
end

for i=1,f(x) do
    print(i)
end

for i=10,1,-1 do
    print(i)
end


3.2.2 泛型for循环
for i,v in ipairs(a) do
    print(v)
end

在lua中pairs与ipairs两个迭代器的用法相近,但有一点是不一样的:
pairs可以遍历表中所有的key,并且除了迭代器本身以及遍历表本身还可以返回nil;
但是ipairs则不能返回nil,只能返回数字0,如果遇到nil则退出。它只能遍历到表中出现的第一个不是整数的key


















 



没有评论:

发表评论

leetcode 17

17.   Letter Combinations of a Phone Number Medium Given a string containing digits from   2-9   inclusive, return all possible l...