《Programming in Lua 3》读书笔记(一)

       断断续续的看这本书快一个月了,由于平时要上班所以读书时间是零碎的,再加上直接看的是英文版,而自己的英语水平就那样,所以进度不咋样。快一个月了,300来页的电子版至今才看到40来页。当然一开始我也没做很快就要看完这本书的打算,因为Lua对于我来说是一种新的语言,本身C++熟练度就有待提高,现在学Lua也是本着提升自己技能而出发的。所以一开始的决定就是慢慢来,学了看了就得懂,要尽量做到学了一遍就会用。

       一开始没有打算写笔记,这跟我当时自学C++不一样。学C++的时候,我看《C++ Primer 4》的时候差不多是一手书本一手笔记本这样学过来的,所以看完那本书我的笔记本也差不多写满了。现在学Lua没有做笔记,总感觉少了点啥,又加上看的是英文版,后来想想看完书写写学习笔记或许能加深自己的理解,所以在学了快一个月的时候,开始决定写学习笔记了。现在看到part1的第三章了,然后慢慢把前面的内容整理下,当做是复习吧。

       所有的代码都是在mac环境下用终端或者sublime编写的。

《Programming in Lua 3》Part1

1.Getting Started

        一开始的"Hello World"是很简单的,然而第二个稍微复杂点的函数则出了点问题:

--define 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("*n")
print(fact(a))

        这是一个简单的阶乘函数,由于我是参考网友建议用的sublime编辑器,我用sublime运行这段代码老是有问题,查了下就是 a = io.read("*n") 这里,a得不到数据,而我转用mac上的终端运行这段代码则能运行成功。对于这个问题我目前不知道该怎么处理,留下个疑问吧~这里的简单使用到了Lua的函数,以function开始,后接函数名和参数表,以end结尾。函数相关的在之后有详细介绍。

1.1 Chunks (语句块)?

         a.  Lua中语句间可以用";"分隔符也可以不用,因而以下语句都是合理的:

a = 1
a = 1;
a = 1; b = 2
a = 1 b = 2

        因个人习惯不同,可以有不同的使用风格。

        b. 如果已经配置好了mac下的Lua环境,则运行终端,输入"lua",则进入了lua的运行环境(不知道可不可以这么说),退出则是(ctrl -d UNIX,ctrl -z Windows),或者输入os.exit()命令退出。

        c. 书上提到的-i命令暂时不知道如何使用,在sublime里面输入这个会报错,不知道是啥原因。而另外一个函数dofile则使用成功,相当于在一个lua脚本文件中调用另外一个lua脚本文件,如在test1.lua中写dofile("test2.lua"),则相当于打开了test2.lua文件,可以调用这个文件中定义的一些东西。书作者也是这么推荐,如果一个chunk过于庞大,则推荐将其单独写一个脚本文件,然后用-i命令或者dofile函数调用这个脚本文件。

1.2 Some Lexical Conventions (语法约定)?

       a. 关于变量命名:Lua中的变量命名可以是字母、数字和下划线,并且规定不能以数字开头。这个和C++里面的一样。并且作者也告诫了变量命名的时候不要使用连续的大写字母,因为lua对这种命名方法有特殊的用途。而作者也约定了将下划线用于虚变量(?)的命名。

       当然,和C++一样,有一些变量名是不能随便用的,如and、break、do之类的,这个是lua要用的;

并且,lua是区分大小写的,这意味着do和Do、DO表示的是三个意思。

       b.关于注释:

       lua也提供了两种注释的方式:

       单行注释的话以"--"开头,如:

--test comment

      多行注释的话以"--"开头,后面接"[[]]",如:

--[[
test  comment
]]

      还有一种方式是"--[[ --]]",如:

---[[ 
comment 
--]]


      而较有意思的是,针对多行注释的第二种形式,在:--[[前面再加一个-便整体取消了注释,如:

      我觉得这样挺方便的。

1.3 Global Variables

       Lua中的全局变量不需要初始化就可以使用,没有初始化的变量使用的时候,其值为nil;而当我们将某个全局变量赋值为nil,系统便会回收该变量占用的内存,因此这应该能理解为Lua的内存回收机制吧?

1.4 The Stand-Alone Interpreter

       这一部分的内容暂时没有看懂讲的是什么,主要是我在sublime里面实现不了这部分所讲的东西。。。


       OK,第一章开篇的就这些,东西比较简单,讲的内容算是带着入门吧~~

       继续加油~!奋斗

原文地址:https://www.cnblogs.com/zhong-dev/p/4044589.html