Home / PostsPost
Lua基础学习方式 (一天学会)
嘟噜聪2016/09/15 16:32:04 8442人已阅
简介 Lua是一种轻量语言,它的官方版本只包括一个精简的核心和最基本的库。这使得Lua体积小、启动速度快。它用ANSI C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。和许多“大而全”的语言不一样,网路通讯、图形界面等都没有默认提供。但是Lua可以很容易地被扩展:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。事实上,现在已经有很多成熟的扩展模块可供选用。(来自wikipedia)
Lua基础学习方式 (一天学会)
Lua是一种轻量语言,它的官方版本只包括一个精简的核心和最基本的库。这使得Lua体积小、启动速度快。它用ANSI C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。和许多“大而全”的语言不一样,网路通讯、图形界面等都没有默认提供。但是Lua可以很容易地被扩展:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。事实上,现在已经有很多成熟的扩展模块可供选用。(来自wikipedia)
一天学会只是对于有基础的同学来说,它是一门非常轻量级的语言。不管你信不信,反正我就是一天学完基础了。
网上也有非常多的教程,大家可以根据自己的喜好去选择学习网站
只简单讲讲方法,其他的得靠自己啊...
关于我了解到的Lua
我也是前几年对知道有这门语言的。最初只知道它是用来开发游戏插件的,比如《魔兽世界》很多插件就是用lua语言写的。
再次了解Lua的时候是在老罗开锤2发布会时候,当时它门票捐赠给了OpenResty开源组织。似乎后来OpenResty就火了,然后我也准备开始用Lua+Nginx做一些东西了。
Lua+Nginx可以做很多的事情,比如数据过滤,数据验证,访问控制等等。
Lua 安装
Ubuntu系统自带lua语言,如果没有或使用的是其他Linux系列系统可以参考官网的安装方式。
安装方式也非常简单:
curl -R -O http://www.lua.org/ftp/lua-5.3.3.tar.gz
tar zxf lua-5.3.3.tar.gz
cd lua-5.3.3
make linux test
安装完后执行$ lua
命令进入控制台看看。
创建一个lua文件hello.lua
并保存
#!/usr/bin/lua
print("Hello Lua!");
然后执行命令$ lua hello.lua
如果没报错的话应该会输出 "Hello Lua!"
安装phpstorm Lua插件
phpStorm是一款非常强大的开发工具,实在是太强大了我这就不一一介绍了,以前写过一篇关于phpStorm的正确使用方式。
PhpStorm可以让代码高亮,这点很重要,这么小门的语言都给做了代码高亮,真是太棒了
请大家购买正版
安装方式
- 快捷键
command + ,
打开配制 - 在左侧的先项中找到
Plugins
- 然后在搜索栏中输入lua (应该会搜索到两个,一个是Lua 一个是OpenResty Lua Support)
- 选择相应用的,然后安装就行了
- 重启PhpStorm
重启完后在phpStorm的右侧会出现一个Lua的选项卡
选择它就可以在phpstorm下运行Lua脚本了。
安装了OpenResty Lua Support插件当写Lua for Nginx 相关的脚本,将会有一小点的编码提示,是不是很6 (^ν^)
Lua 语法
与大多数语言一样,我这也就不贴了,请参考
Lua 数据类型
这个我就不多讲解了,既然有语言基础,那么语法都差不多。
主要基本类型:nil、boolean、number、string、userdata、function、thread和table。
类型 | 描述 |
---|---|
nil | null 类型 |
boolean | 布尔型true跟false |
number | 双精度类型的实浮点数 |
string | 字符串由一对双引号或单引号来表示 |
function | 函数 |
userdata | 表示任意存储在变量中的C数据结构 |
thread | 表示执行的独立线路,用于执行协同程序 |
table | Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。 |
关键字type查看类型
print(type(a))
数据类型中文文档参考: Lua 数据类型
其他语法
由于很多都是重复的所以我就不贴代码及教程啦,我只说方法
把上面贴的教程里的所有类型及语法都挨个试一遍。
不明白的多试几遍,语言就那点东西,只要有逻辑掌握了基本语法大多数语言都能写。
这是当时我学习的时候把所有的类型都挨个敲了一遍,并且试着改改教程里说的,或去实现点东西。
协同处理
协同处理这个应该算是比较绕,与其他语言的迭代器很像,这里可能得花比较长的时间去了解。
比如:
#!/usr/bin/lua
function foo(a)
print("foo function", a)
return coroutine.yield(2 * a)
end
co = coroutine.create(function(a, b)
print("第一次协同执行输出: ", a, b)
local r = foo(a + 1)
print("第二个协同扫行办出: ", r)
local r, s = coroutine.yield(a + b, a - b)
print("第三个协执行输出: ", r, s)
return b, "结束协同程序"
end)
print("main", coroutine.resume(co, 1, 10))
print("--分割线----")
print("main", coroutine.resume(co, 'r'))
print("--分割线----")
print("main", coroutine.resume(co, 'x', 'y'))
print("--分割线----")
print("main", coroutine.resume(co, "x", "y"))
print("--分割线----")
运行上面的程序试试看。
尾巴
大概就说这么多吧。
一是太懒了,二是因为似乎有好长时间没有更新文章了。
学习是一件非常痛苦的事情, 我们学习一起坚持
学完Lua基础知识下篇主要写OpenResty的实际应用吧
大家加油!
很赞哦! (0)
上一篇:一支钢笔,从头开始
下一篇:开发微信小程序入门前
文章评论
点击排行
本栏推荐
标签
站点信息
- 微信公众号