OpenResty的数据类型

程斌 2019-07-29 PM 839℃ 0条

luadatatype.png

Lua世界中,可以通过type函数来识别类型,如:

print(type("hello word")); // string
print(type(print)); // function
print(type(false)); // boolean
print(type(360)); // number
print(type({})); // table
print(type(nil)); // nil

字符串 string

Lua中,字符串变量是不可变的,如果你去更改(拼接、重新赋值)它,就等于新建字符串。这样子的做法,有好处也有坏处,好处是同样的字符串多次出现,在内存当中会存在一次;不好的地方,就是对字符串修改,新增了很多必要的字符串。
在Lua中,使用..来做字符串的链接操作;如:print("红酒" .. "花生");,输出“红酒花生”;有三种表示字符串的方式,分别是:单引号(''),双引号(""),双层中括号([[]]、[=[]=]);

print(type("红酒花生")); // string
print(type('红酒花生')); // string
print(type([[红酒花生]])); // string
print(type([=[红酒花生]=])); // string 主要用在输出的字符串中,又包含[]的情况

函数 function

函数是Lua中的一等公民,可以当作把函数放在一个变量中,也可以把它当作函数的入参和出参;
如:

local sayhi = function()
end

local function sayhi()
end

以上两种声明方式,是完全等价的。

布尔 boolean

false 和 true,也是计算机世界中的0 和 1;这个简单。
但是在Lua中,只有 nilfalse 是假,其他的都为真,注意:0 也是真。

local a = 0;
if a then
    print('true');
end

数字 number

Lua的number类型,是使用双精度浮点数来实现的。值得一提的是,LuaJIT支持dual-number(双数)模式,Lua会根据上下文用整形来储存整数,用双精度来储存浮点数。此外,LuaJIT还支持大整形,如:

print(9223372036854775807LL - 1) // 9223372036854775806LL 大整形数相减

table

table是Lua中唯一的数据结构。其中的结构可以是关联的方式存在,也可以是下标的方式存在,可混合。

local color = {first = "red", two="blue"};
print(color["two"]) // blue 注意:申明的地方,下标不需要引号,取值的时候,下标需要引号。

local a = {};
a[1] = 1;
print(a[1]); // 1

空值 nli

申明一个变量,没有赋值,它的默认值就是 nilngx.null 的也是空

标签: openresty

非特殊说明,本博所有文章均为博主原创。

评论啦~