Openresty Principles and Concepts (8) Get started with Lua quickly

Quickly  get started with Lua

重点: Luajit相比'标准'不具备哪些'新特性',相比'标准'具备哪些新特性?

参考: Lua 作者编写的 '<<Lua 程序设计>>'这本书

①  Introduction to lua

关注点: 'Lua' 是 OpenResty 中使用的'编程语言',掌握它的'基本语法'还是很有'必要'的

后续: 关注'不同redis版本'内嵌的lua版本'可使用'的lua特性

②  Introduction to luajit in openresty

luajit 在 /usr/local/openresty/luajit/ 目录中,'避免污染系统的 luajit'

③Data  type

1) 通过 'type 函数'来返回一个值的'类型'

2) '字符串'  --> '特性和注意事项'

3) 表达一个字符串:'单引号、"双引号"'、以及'长括号 [[]]'

4) 布尔值  --> 'boolean'

重点:在 Lua 中,只有 'nil 和 false' 为'逻辑假',其他都为'逻辑真',包括'0 和空字符串'也为真

  

在 Lua 中,'空值就是 nil'

案例: 如果你'定义'了一个变量,但'没有赋值',它的'默认值'就是 nil

备注: 后续'nil'和其它'ngx.null'等空值多对比

Null values ​​in openresty: nil, ngx.null, cjson.null, cdata: NULL   Openresty's true and false pits

最佳实践:

 [1]、上述'判断方式'和很多常见的'开发'语言并'不一致'

 [2]、所以,为了'避免'在这种问题上'出错',建议'显式地'写明'比较的对象'

细节点: '~='不等于,'不是'正则比较

5) number '数字'

6) function '函数'

函数在 Lua 中是一等公民:

 [1]、可以把'函数'存放在一个'变量'中         --> 常见把'函数'放到table中

 [2]、可以当作'另外一个函数'的'入参'和'出参'

+++++++++++ "两个函数的声明是完全等价的" +++++++++++

function fun() 

...

end

备注: "推荐前者"

fun = function () 

...

end

④Commonly  used standard libraries

强调: 函数性能的'优先级'很重要

1) '字符串' string库函数

 

2) table '库函数'

3) math '数学函数库'

[1]、可以在'指定的范围'内,'随机'地生成'两个数字'

推荐: '机器名+进程ID+线程ID+毫秒时间戳'做种子

秒级的os.time在'短时间(1s内)'调用中,random函数会以'相同的随机种子'产生'相同'的随机数

uuid 本身也是先有种子,然后通过随机数生成的。

  

Certificate encryption and decryption haveged supplementary entropy

⑤Dummy  variable

所谓的虚变量就是一个'普通的变量',没有任何特殊之处,只不过是'不用它的值'而已

虚变量'场景':除了在'返回值'里使用,虚变量还经常用于'循环'中

 ⑥The  problem of entropy 

Guess you like

Origin blog.csdn.net/wzj_110/article/details/131334905