原文链接:http://www.douban.com/group/topic/17549829/

话说看文字性的定义和注意事项最无聊了,所以就来大朵大朵的摘抄吧。 
先来热身一下吧! 

进入和退出交互环境 
在命令行中输入 lua 回车就会以交互模式运行 lua,
键入文件结束符可以退出交互模式(Ctrl-D in Unix, Ctrl-Z in DOS/Windows),
或者调用 OS 库的 os.exit() 函数也可以退出。

来看两个例子 
如大多数语言一样,首先要写的就是著名的 hello, world 
在 lua 环境命令行输入 
print("hello, world") 
很眼熟吧,居然和 Python3.x 语法一样。 
如果是把 print("hello, world") 保存在 lua 文件中,比如说使用 lua filename.lua

再来看另外一个有点小复杂的例子

例子中首先定义一个是计算阶乘的函数,然后根据用户输入的数字输出结果。
感叹一下,神似 python 那! 
-- defines a factorial function 
function fact (n) 
if n == 0 then 
return 1 
else 
return n * fact(n-1) 
end 
end 
print("enter a number:") 
a = io.read("*number") -- read a number 
print(fact(a)

Chunk 是什么玩意? 
Chunk 是一系列语句,Lua 执行的每一块语句
(可以是一系列语句的组合,还可以是函数,Chunk 可以很大,在 Lua 中几个 MByte 的 Chunk 是很常见的),
比如一个文件或者交互模式下的每一行都是一个 Chunk。 
在交互模式下,Lua 通常把每一个行当作一个 Chunk,但如果 Lua 一行不是一个完整的 Chunk 时,
他会等待继续输入直到得到一个完整的 Chunk. 在 Lua 等待续行时,显示不同的提示符(一般是 >>)。 
可以通过指定参数让 Lua 执行一系列 Chunk。
例如:假定一个文件 a 内有单个语句 x = 1 另一个文件 b 有语句 print(x) 
lua -la -lb 
命令首先在一个 Chunk 内先运行 a 然后运行 b。 
运行完 Chunk 后进入交互模式则需要加上 -i 选项,如 lua -i -la -lb 
除此之外,还可以使用 dofile 函数,在交互模式下: 
dofile("test.lua") 
然后就可以引用其中的函数等等。 
-i和dofile很方便调试、测试代码。

语法约定
标示符:字母 (letter) 或者下划线开头的字母、下划线、数字序列.
最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的。
Lua 中,letter 的含义是依赖于本地环境的。 
保留字 :以下字符为 Lua 的保留字,不能当作标识符。 
and break do else elseif 
end false for function if 
in local nil not or 
repeat return then true until 
while
注意:Lua 是大小写敏感的.

注释:单行注释:-- 
-- no action (comment) 
多行注释:--[[ --]] 
--[[ 
print(10) 
--]]

全局变量 
定义:
全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,
访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil. 
删除全局变量,赋值为nil就可以了,如 m = nil

命令行方式
lua [options] [script [args]] 
-e:直接将命令传入 Lua 
lua -e "print(math.sin(12))" --> -0.53657291800043 
-l:加载一个文件. 
-i:进入交互模式. 
_PROMPT 内置变量作为交互模式的提示符 
lua -i -e "_PROMPT=' lua> '" 
Lua 的运行过程,在运行参数之前,Lua 会查找环境变量 LUA_INIT 的值,
如果变量存在并且值为 @filename,Lua 将加载指定文件。
如果变量存在但不是以 @ 开头,Lua 假定 filename 为 Lua 代码文件并且运行他。
利用这个特性,我们可以通过配置,灵活的设置交互模式的环境。
可以加载包,修改提示符和路径,定义自己的函数,修改或者重命名函数等。 
全局变量 arg 存放 Lua 的命令行参数。 
lua script a b c 
在运行以前,Lua 使用所有参数构造 arg 表。脚本名索引为 0,脚本的参数从 1 开始增加。脚本前面的参数从 -1 开始减少。 
lua -e "sin=math.sin" script a b 
arg 表如下: 
arg[-3] = "lua" 
arg[-2] = "-e" 
arg[-1] = "sin=math.sin" 
arg[0] = "script" 
arg[1] = "a" 
arg[2] = "b"

关于分号 
Lua 在每个语句结尾的分号(;)是可选的,同一行中有多个语句的话最好使用分号(;)隔开
(这里说的是最好而不是必须,因为即使没有分号 lua 也会正确执行而不会报错,但是为了更好的阅读建议加上分号)。

aul 语法约定和命令行方式相关推荐

  1. 如何使用cmd进入打印机选项_怎样用命令行方式添加打印机端口? (已解决)

    命令行方式添加打印机是比较简单的,现在我的问题是这样的, 有一台网络打印机,用下面附录的方式安装驱动程序是没有问题的, 一个DOS命令就可以搞定,但是需要创建一个TCP/IP 的端口,即不是 用的LP ...

  2. shp2sde命令行方式向arcsde批量导入数据脚本的生成步骤

    shp2sde命令行方式向arcsde批量导入数据脚本的生成步骤  作者:半块点心  出处:GIS动力站原 1.在dos提示符下执行: FOR /F "eol=; tokens=1,2,3, ...

  3. Mysql语法大全(命令行)(简洁、明了、全面)

    Mysql命令行的语法 另外一个Mysql语法大全的版本:点这里 两个Mysql语法大全以及命令行代码!!!基本上学习Mysql没有问题 嘿嘿!学习是一个长期的过程!!!还会继续更新!!! 基本的My ...

  4. delphi DCC32命令行方式编译delphi工程源码

    本文链接地址:http://blog.csdn.net/sushengmiyan/article/details/10284879 作者:苏生米沿 Borland出品的Delphi,在TIOBE公布的 ...

  5. MySQL基本操作(命令行方式)

    MySQL基本操作(命令行方式) 1.登录MySQL 2.MySQL 创建数据库 3.MySQL 删除数据库 4.MySQL选择数据库 5.MySQL 创建数据表 6. MySQL 删除数据表 7.M ...

  6. android.mk 添加v7_在Android上以命令行方式移植FFmpeg

    最近要做视频I帧提取和摘要生成的项目,在Android平台上的应用,经过调研,发现ffmpeg有很多相关功能的轮子,因此考虑将ffmpeg移植到Android平台.为了更好解耦和以及更多的文档参考,选 ...

  7. ECS(Linux)连接RDS,使用命令行方式连接实例

    使用命令行方式连接实例 通过命令行连接RDS MySQL数据库,连接方式如下: mysql -h<连接地址> -P<端口> -u<用户名> -p -D<数据库 ...

  8. centos oracle命令,CentOS7命令行方式搭建Oracle11gR2

    CentOS7命令行方式搭建Oracle11gR2 CentOS7命令行方式搭建Oracle11gR2 准备工作 vim /etc/selinux/config SELINUX=disabled sy ...

  9. mysql命令行方式添加用户及设置权限

    以前总是喜欢通过phpmyadmin去添加用户和数据库,这次装完系统后,配置了一大堆东东,实在不想安装phpmyadmin了,就通过命令行方式创建了数据库和设置权限,记录一下,免得以后总是百度 关键步 ...

最新文章

  1. metaweblog php,[PHP]利用MetaWeblog API实现XMLRPC功能
  2. c代码中 执行sh文件 带参数_创建含有$1参数的Bash脚本以及运行脚本的三种方法...
  3. mac10.12 安装mysql_在mac os10.12上安装mysql5.7.18
  4. csds原装的Markdown文档
  5. shared_ptr四宗罪
  6. 生产企业ERP流程是什么
  7. 如何做好ASO应用优化?ios如何aso优化,android aso 优化
  8. CSS3重复渐变(线性和径向渐变)
  9. Python四大神兽(迭代器生成器闭包装饰器)
  10. TuX2:用于机器学习的分布式图计算
  11. ppt转图片LibreOffice解决方案--java
  12. python更改图片存储大小_python不改变图片尺寸压缩到指定大小
  13. cannot enlist more than one non-XA resource
  14. 修改谷歌浏览器不安全提示
  15. 数据结构第二遍思维导图
  16. 养老院人员定位系统包含室内人员定位,老人防跌倒报警系统-新导智能
  17. OKhttp3基本POST使用
  18. ThingsBoard 2.5.3发布
  19. DOS中SET命令的详细用法
  20. c 编程语言翻译 网站,计算机语言翻译

热门文章

  1. 增长复盘|我们在小程序实现裂变!日拉新1000+
  2. 超详细解读OSPF Router-ID
  3. 风暴控制(storm control)
  4. 麦克风阵列声源定位解决方案
  5. s:hidden name=id value=id/s:hidden
  6. AVL-Cruise纯电动汽车仿真建模教程-能量回收策略的实现
  7. 【Paper】A Comparative Evaluation of Unsupervised Anomaly Detection Algorithms for Multivariate Data
  8. elasticsearch数据迁移esm
  9. 软件的生命周期的若干阶段
  10. SQLYog 数据连接配置的迁移