Lua学习笔记(3)——语句

赋值

1.Lua支持多重赋值:a,b = 10,2*x  等价于 a = 10, b=2*x。

2.多重赋值中,先对等号右边的所有元素求值,然后才执行赋值。因此,交换两个变量只需要这么表示:

交换两个变量

3.多重赋值时,当左边个数多于右边时,多余的变量将赋为nil,当右边的个数多于左边,那么多余的值会被丢弃。

多重赋值个数不等时

局部变量与块(block)

1.用local语句来创建局部变量,局部变量的作用域仅限于声明它们的那个块:

局部变量

2.显式地界定一个块可用do-end关键字,用于严格控制某些局部变量:

do-end 块

3.“尽可能地使用局部变量”是一种良好的编程风格。局部变量可以避免将一些无用的名称引入全局环境,避免弄坏了全局环境。并且访问局部变量比访问全局变量快。最后,局部变量会随着其作用域的结束而消失,进而被GC回收。

4.Lua讲局部变量的声明当做语句处理。局部变量只有在声明之后才是可见(visible)的。

局部变量

5.创建一个局部变量foo并用全局变量foo的值初始化它,可以保存全局变量foo的值,避免被后续函数改变,并且能加速当前作用域对foo的访问。

习惯写法

6.在一个块的中间使用声明语句可以让这个变量在初始化时刻就拥有一个有意义的初值,并且缩短它的作用域,这样有助于提高代码的可读性。

控制结构

1.控制结构包括:if(条件),while、repeat、for(迭代)。其中if、for 和 while 用end结尾,repeat用until结尾,并且所有不是false和nil的值都视为真。

if then else

1.根据if后条件的真假来判断执行then或者else语句。

if 语法
嵌套的if

while

1.重复执行循环体直到while的条件为假。

while语法

repeat

1.重复执行循环体直到repeat的条件为真。

repeat语法

数字型for(numeric for)

数字型for语法

1.var从exp1变化到exp2,每次变化都已exp3为步长(step)递增var,并执行一次执行体。弱exp3不指定,默认为1。

示例

2.for的三个表达式是在循环开始前一次性求值的,并且控制变量会被自动声明为for语句的局部变量,仅在循环体内可见,在循环结束后就不存在了。如果要在循环结束后访问控制变量的值,应将值保存到另一个变量中。

控制变量是局部的
循环结束后要访问控制变量的值 i

泛型for


泛型for语法(打印数组a的所有值)
示例

1.ipairs,用于遍历数组的迭代器函数,每次循环中,i会被赋予一个索引值,同时v被赋予一个对应索引的数组元素值。

2.通过不同的迭代器,泛型for几乎可以遍历所有的东西,而且代码极具可读性。标准库中的迭代器包括:文件中每行的(io.lines),迭代table元素的(pairs),迭代数组元素的(ipairs),迭代字符串中单词的(string.gmatch)等。迭代器也能自己编写。

3.泛型for与数字for的相同点,一是循环变量是循环体的局部变量;二是执行体中绝不应该对循环变量作任何赋值。

4.具体示例,要将一周中每天名称的表days转换成它再一周中的位置:

一周中每天的名称
创建一个逆向table,以名称作为索引,位置作为值
revDays的最后结果

break与return

1.break 和 return 用于跳出当前的块。并且只能是一个块的最后一条语句,或者end,else或until前的一条语句,因为位于它们之后的语句无法被执行到。

break是then块的最后一条语句


2.break,用于结束一个循环,它只会跳出包含它的一个内部循环(for,repeat或while),而不改变外层的循环。

3.return,用于从一个函数中返回结果,或者用于简单地结束一个函数的执行。

4.如果希望在一个块中间插入一句return或break,可以使用一个显式的do块来保住一条return语句:

块中插入return或break
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 《裕语言》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 27,790评论 5 19
  • 作为80后,我们都是新时代的年轻人,我们崇尚孝道,但绝对不守旧,行事具有80后特有的风格,崇尚自由,不喜拘束。这样...
    TA你我集结阅读 388评论 0 1
  • 跑完步神清气爽,来写一下晨读感悟。 跑步的好处真有很多,不用费力找,脑子里就能蹦出词儿。 大部分人跑步,是喜欢看见...
    poootaootooo阅读 229评论 0 0
  • 上高中的时候,没觉得友情有那么复杂,听别人动不动就绝交,要不然就吵架你说我坏话我说你坏话的闹别扭还觉得是人家矫情,...
    庭亭阅读 346评论 2 1
  • 朋友想在秋天去北京,去看故宫和长城,我劝她,最好别去,毕竟中国这么大,还有别的风景/为什么要去故宫,为什么要去长城...
    狗奴才乐队阅读 169评论 0 0