《七周七语言》(一)——Lua初体验

《七周七语言》(一)——Lua初体验

Scroll Down

安装

入手《七周七语言》挺久的了,一直拖延没看,今天开始,本书第一个介绍的是Lua,早之前听说过可以用来写游戏脚本,这次尝试一下

如无特别说明,以下命令均在 centOS 7 执行

curl -R -O http://www.lua.org/ftp/lua-5.3.0.tar.gz
tar zxf lua-5.3.0.tar.gz
cd lua-5.3.0
make linux test
make install

过程中可能会出现fatal error: readline/readline.h: No such file or directory错误,这是因为缺少依赖包造成的

redhat 系列下这个软件包叫 readline-devel ubuntu 下叫 readline-dev 细分又分为 libreadline5-dev 和 libreadline6-dev

这不是本文重点,所以只要解决问题就行了,执行

yum install readline-devel 

安装成功后继续

make linux test
make install
lua -v

出现这个Lua的版本号Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio代表安装成功了,接下来可以愉快的玩耍了。

Hello World镇楼,输入lua进入REPL(Read-Eval-Print Loop)

print("Hello World!!!")

或者

"Hello world"

image.png


以上内容可能会显得冗长,因为并没有区分本篇是给小白看的,还是当作自己的笔记,不过秉着烂开始原则,直接先写了,后期搞明白定位了文风再变。


开始

语法

Lua没有作为结束符,也不用拿着游标卡尺量空格的缩进,甚至两个语句之间的区分只要一个空格就行,只要你不怕别人看了你的代码掀桌子,这样写也是可以的。

print("no time") print("for love")

image.png

详细的命名规范以及词法、语法、流程控制等,可以参考以下几个站点的教程,都写得很详细。

简单教程

w3school

runoob

函数

  • 函数是一等公民,可以赋值给变量,可以当作参数传递,可以被保存在数据结构中

以下就直接照着书上徒手敲一遍,保存成.lua文件,执行一下

function call_twice(f)
	ff = function(num)
		return f(f(num))
	end
	retirn ff
end

function triple(n)
	return n*3
end

test = call_twice(triple)
=test(5)

输出结果是45,果然好看的代码根本无需解释(因为太短),一看就明白了

特点

  • lua是动态类型的脚本语言,即解释执行
  • 可以基于table实现自己的范式——过程式、面向对象、事件驱动等