boolean/number/string的使用

  • 一)boolean(布尔)

  • 二)number(数字)

  • 三)string(字符串)

一)boolean(布尔)

布尔类型,可选值 true/false;

Lua 中 nil 和 false 为“假”,其它所有值均为“真”。比如 0 和空字符串就是“真”;

local a = true
local b = 0
local c = nil

if a then
    print("a")        -->output:a
else
    print("not a")    --这个没有执行
end

if b then
    print("b")        -->output:b
else
    print("not b")    --这个没有执行
end

if c then
    print("c")        --这个没有执行
else
    print("not c")    -->output:not c
end

二)number(数字)

Number 类型用于表示实数,和 C/C++ 里面的 double 类型很类似。可以使用数学函数math.floor(向下取整)和math.ceil(向上取整)进行取整操作。

三)string(字符串)

Lua 中有三种方式表示字符串:

  • 1、使用一对匹配的单引号。例:'hello'。

  • 2、使用一对匹配的双引号。例:"abclua"。

它支持一些转义字 符,列表如下

  • 3、字符串还可以用一种长括号(即[[ ]])括起来的方式定义。整个词法分析过程将不受分行限制,不处理任何转义符

定义:"add\name",'hello' 字符串

在 Lua 实现中,Lua 字符串一般都会经历一个“内化”(intern)的过程,即两个完全一样的 Lua 字符串在 Lua 虚拟机中只会存储一份。每一个 Lua 字符串在创建时都会插入到 Lua 虚拟机内部的一个全局的哈希表中。

另外,Lua 的字符串是不可改变的值,不能像在 c 语言中那样直接修改字符串的某个字符,而是根据修改要求来创建一个新的字符串。Lua 也不能通过下标来访问字符串的某个字符。

字符串连接使用的是 ..

字符串截取

结果:

字符串与number类型转换

使用 # 来计算字符串的长度,放在字符串前面

注意:string不可修改

根据图可知:

1.当对a重新赋值时,并不是将之前的字符串this is a替换成this is new a而是新建里一个字符串指向了a。

  1. a,b 的字符串值相同,两个完全一样的 Lua 字符串在 Lua 虚拟机中只会存储一份。

  • 1)在 Lua 实现中,Lua 字符串一般都会经历一个“内化”(intern)的过程,即两个完全一样的 Lua 字符串在 Lua 虚拟机中只会存储一份。每一个 Lua 字符串在创建时都会插入到 Lua 虚拟机内部的一个全局的哈希表中。

  • 2)Lua 的字符串是不可改变的值,不能像在c语言中那样直接修改字符串的某个字符,而是根据修改要求来创建一个新的字符串。Lua 也不能通过下标来访问字符串的某个字符。

Lua的字符串和其它对象都是自动内存管理机制所管理的对象,不需要担心字符串的内存分配和释放。

输出结果

Last updated

Was this helpful?