lua学习之入门(二)----基础语法1
1、lua学习之入门(一)----环境搭建
2、lua学习之入门(二)----基础语法1
3、lua学习之入门(二)----基础语法2
4、lua学习之入门(三)----函数
学习LUA第6个小时了,这是第2篇文章,也是我今天学习的最后总结了,LUA我也是个初学者,我目标只是想尽可能的把自己学习的一些想法表现出来.可能写的没有那些大虾们好,大虾们的生动.但至少是我个人的写作,本人很不喜欢转载的,转载不如直接去别人BLOG看..再一次声明..我是LUA初学者,一个初学者写给初学者的....废话不说..入正题.
任何语言,首先要明白的是 标识符 的命名规则,LUA的规则和C语言的没太大分别都是由:字母,数字,下划线组成,而且不能以数字开头..貌似我会的编程语言都是这样的规定.. 这个没啥技术难度....靠死记的..
LUA的字符串表示是可以用单引号或者双引号的...这点跟JAVASCRIPT是一样的,
在LUA手册里有一段这样的东西
很别扭啊手册里的介绍是这个a所代表的字符串显示都是一样的...感觉犯晕啊...
手册例子想表达的意思我解析一下,
a = 'alo\n123"' 这个字符串是用单引号括起来的,123后面跟了个".....想表达的意思就是说,如果用单引号作为字符串的引用的话,内部的双引号做双引号处理,
a = "alo\n123\"" 这个字符串则是用双引号括起来的,为了解决冲突,就要使用转义字符\"去代表"
a = '\97lo\10\04923"' 这个其实就是ASCII码转义而已..
最令人犯晕的是下面..
里面的思想有个灵活的配对,"[[" 在手册里有个名字,叫长括号,而在"[==["中间的等号个数代表多少级的长括号,没有等号为0级,1个等号为1级,类推下去.
开始在代码里,我以为这里"级"的意义在于这个字符串占多少行的意思,但是经过我代码的测试原来没任何关系..
依照我这个初学者的猜测...设置这些的意义,目的就是一个避免字符串内过多的使用转义字符吧,LUA的目标是要做嵌入脚本语言,
例如有个游戏的对白,
a=[==[
这样在[==[里就可以使用任何的字符串表达符,提供了更大的灵活性.
后来我咨询了下LUA高手他给我的答复如下
看来我的猜想是正确的.
变量
LUA称为脚本语言,那么就注定了他的变量是弱类型的,就是说变量没有类型,至少我认识的脚本语言JAVASCRIPT就是没类型的.所以姑且把脚本语言定义为变量没有类型的语言就是脚本语言...(某XX教授:你丫的乱下定义误人子弟!..纯粹是帮助记忆...别教真...别教真).
变量没有类型,有类型的只是值 (脚本语言的特点)
userdata 类型用来将任意 C 数据保存在 Lua 变量中。这个类型相当于一块原生的内存,除了赋值和相同性判断,Lua 没有为之预定义任何操作。然而,通过使用 metatable (元表) ,程序员可以为 userdata 自定义一组操作. userdata 不能在 Lua 中创建出来,也不能在 Lua 中修改。这样的操作只能通过 C API。这一点保证了宿主程序完全掌管其中的数据。
大家都知道,C语言里有几个特别的数据构造,例如,结构体,共用体等,这个 userdata 类型其实就满足结构体传值的功能的数据类型,至少我现在是这样理解的..至于元表我还没有接触,暂时将 userdata 类型等同于一个只读类型.
Lua 中有三类变量:全局变量,局部变量,还有 table 的域。 其实今天大多的时候都花费在字符串里,但是一种语言来说,字符也是一个很重要的重点,例如C#基本提供了每个类都是 ToString()方法,C语言,单独用一章介绍字符串,数据结构里也独立一个章专门说字符串,所以这个字符串是在我们日常开发中经常用到的,对它理解得深其实是有好处的...今天就到这里
明鏡臺