博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Lua学习小记——语言
阅读量:6953 次
发布时间:2019-06-27

本文共 1464 字,大约阅读时间需要 4 分钟。

1.起点,经典hello world:

print("Hello World")

这与大多数脚本语言没什么两样,总体来说如果你对JavaScript、Ruby、Python之类有所学习的话,LUA还是相当简单的
2.函数定义,类似JS,用begin end代替大括号:

function fact (n)

    if n == 0 then

       return 1

    else

       return n * fact(n-1)

    end

end

function其实就是lambda算子.
3.  8种基本类型:
nil
boolean
number
string
userdata
function
thread
table
boolean类型除了false和nil是false之外,其他都是true
lua支持函数式编程,因此函数是一等公民,userdata用于存储C语言的数据,待深入。thread与多线程编程有关。table是lua的基本数据结构,是array和hash的综合体,比较奇怪的是默认索引从1开始,而不是通常的0。看例子:

days = {

"Sunday", "Monday", "Tuesday", "Wednesday",

              "Thursday", "Friday", "Saturday"}

w = {x=0, y=0, label="console"}

4. lua与ruby一样支持多重赋值和函数可以返回多个值,常见控制结构没有什么好说的。
5.可变参数,lua有很浓重的C味道,可变参数也与C一样,用...表示:
function
g (a, b, ...) ... end
也可以通过表来传递命名参数:

rename{old="temp.lua", new="temp1.lua"}

6.局部变量的声明 local i=0,仅在声明的代码块内有效。如果没有声明为local,将自动成为全局变量,一个变量在赋值前是nil,通过将变量声明为nil可以删除该变量
7.LUA是有尾递归优化的,也提供了各种高阶函数以及闭包等等特性。
8.loadstring函数,一般其他解释语言中的eval函数相似,不过他是返回一个chunk(每个chunk都是匿名函数)让你执行,比如

f = loadstring("local a = 10; return a + 20")

print(f())        --> 30

也可以通过loadfile将整个文件载入作为chunk。
9.require,用于加载文件,会搜索环境变量LUA_PATH设定的路径,同时能判断文件是否已经加载来避免重复加载。比较奇特的是路径的设置,与一般的路径完全不同,其实就是用?当占位符,然后require filename的时候,用filename代替这些文号,比如:

?;?.lua;c:\windows\?;/usr/local/lua/?/?.lua

当你require 'lili'的时候,就会寻找下列路径的文件:

lili

lili.lua

c:\windows\lili

/usr/local/lua/lili/lili.lua

10.lua通过loadlib函数可以加载动态链接库
11.pcall在保护模式(protected mode)下执行函数内容,同时捕获所有的异常和错误。若一切正常,pcall返回true以及“被执行函数”的返回值;否则返回nil和错误信息。

文章转自庄周梦蝶  ,原文发布时间 2007-11-29

转载地址:http://xunil.baihongyu.com/

你可能感兴趣的文章
一款基于Linux系统的,TC流量控制
查看>>
2星|《只管去做》:做年度计划的入门级介绍,信息浓度太低
查看>>
2017(第二届)工业软件与制造业融合发展高峰论坛即将召开
查看>>
Java的单例模式实现
查看>>
sed
查看>>
exchange2010下将用户邮箱导出到PST中
查看>>
AIX 部分故障判断及解决方法
查看>>
LVM卷管理
查看>>
java-第九章-循环结构进阶-ATM的取款过程
查看>>
Netty In Action中文版 - 第十一章:WebSocket
查看>>
编译安装和软件包安装
查看>>
predictionio jar 冲突
查看>>
在 Windows Server 2003 中重置目录服务还原模式的管理员帐户密码
查看>>
学习笔记-ELK5安装X-Pack
查看>>
脑洞大开!斯坦福大学推出清理太空垃圾的机器人
查看>>
*6 权限管理的小练习
查看>>
批量备份脚本
查看>>
另类文件加密 图片当密码给文本加密
查看>>
MySQL cluster 7.2集群部署配置
查看>>
iptables开放端口的使用方法总结
查看>>