【Lua】基本数据类型

一 基本类型

可以使用 type 测定给定变量或值的类型

一 nil(空)

表示一个无效值(在表达式中相当于false)

  1. 给 全局变量 和 table 表里的变量赋一个 nil 的值,等同于把它们删掉
tab = {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. 如果有 type(变量) 这个形式,nil 作比较时应该加上双引号
> type(X)
nil
> type(X)==nil
false
> type(X)=="nil"
true

二 boolean (布尔)

包含 false 和 true

  1. false ,nil,0 为假,其它都为 true
print(type(true))
print(type(false))

if false or nil then
    print("至少一个是 true")
else 
    print("false 和 nil 都为 false")
end

三 number (双精度)

表示双精度类型浮点数

  1. 默认 – double(双精度)
print(type(2))
print(type(2.2))
print(type(0.2))
print(type(2e+1))
print(type(0.2e-1))
print(type(3.4235235e-06))

四 string(字符串)

由一对双引号或单引号表示

  1. 也可以用两个方括号 “ [[ ” 来表示“一块”字符串
html = [[
<htnl>
<head></head>
<body>
]]
  1. 再对以个数字字符串上进行算数操作是,lua 会将这个数字字符转成一个数字
> print("2" + 6)
8.0
> print("2" + "6")
8.0
> print("2 + 6")
2 + 6
--字符串连接使用的是 ..
> print("a" .. "b")
ab
> print(157 .. 428)
157428

3.使用 # 计算字符串的长度

> len = "www.runood.com"
> print(#len)
14
> print(#"www.runood.com")
14

五 function (函数)

  1. 函数被看作“第一类值”,函数可以存在变量里
function factorial1(n)
    if n==0 then
        return 1
    else
        return n * factorial(n-1)
    end
end
print(factorial1(5))
factorial2 = factorial1
print(factorial2(5))
  1. 可以以匿名函数的方式通过参数传递
-- function_test2.lua 脚本文件
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
    --
);

六 userdata (自定义类型)

表示任意存储在变量中的C/C++数据结构

七 thread (线程)

表示独立线路,用于执行协同程序

八 table (表)

01 通过“构造表达式”来构建

  1. 数组的索引可以是数字或者是字符串

  2. 表里面的默认初始索引一般以1开始

  3. table 不会固定长度大小,没初始值的 table 都是 nil

-- 创建一个空的 table
tbl1 = {}
for i=1, 10 do
    tbl1[i] = i
end
tbl1["key1"]="val"
print(tbl1["key1"])
print(tbl1["none"])

-- 直接初始表
tbl2 = {"apple", "pear", "orange", "grape"}

二 变量

  1. Lua 变量的三种类型:全局变量,局部变量,表中的域

  2. Lua 中变量全是 全局变量,哪怕是语句块或是函数里,除非用local 显式声明为局部变量

  3. 局部变量的作用域为声明位置开始到所在语句块结束

  4. 变量的默认值均为 nil

    a=5
    local b=5
    function joke()
        c=5
        local d=6
    end
    
    joke()
    print(c,d)        --> 5 nil
    
    do
        local a=6
        b=6
        print(a,b);   --> 5 6
    end
    print(a,b)        --> 5 6
    

一 赋值语句

  1. 赋值是改变一个变量的值和改变表域的最基本的方法

  2. Lua 可以对多个变量赋值

    a, b = 10, 2*x
    --等价于-->  a = 10; b = 2*x;
    
  3. 遇到赋值语句 Lua 会先计算右边所有的值然后再执行赋值操作

    x, y = y, x
    'x' for 'y'
    a[i], a[j] = a[j], a[i]
    'a[i]' for 'a[j]'
    
    --[[
    1. 变量个数 > 值的个数
    按变量个数补足 nil
    2. 变量个数 < 值的个数
    多余的值会被忽略
    --]]
    
  4. 多值赋值经常用来交换变量,或将函数调用返回给变量

  5. 应该尽可能使用局部变量

    ① 避免命名冲突
    ② 访问局部变量的速度比全局变量更快]

二 索引

  1. 对 table 的索引使用方括号 []

  2. Lua也提供了 . 操作

> site = {}
> site["key"] = "I am ok"
> print(site["key"])
I am ok
> print(site.key)
I am ok
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

维他命C++

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值