第四章 语句 Lua程序设计笔记

--第四章 语句
--4.1 赋值
Lua支持多重赋值,先对等号右边所有元素求值,然后进行赋值。这可以用来交换变量
x, y = y, x

若值的个数少于变量的个数,则多余的变量会被赋值为nil。
若值的个数多余变量的个数,则多余的值会被丢弃。

--4.2局部变量与块block
局部变量的作用域仅限于声明它们的那个块。
一个快可以是一个执行体、一个函数或者一个chunk

尽可能使用局部变量:
1避免搞乱全局环境
2访问局部变量更快
3局部变量随其作用域结束而消失,GC可以释放其值。

local foo = foo
这里创建了一个局部变量,并用全局变量foo的值来初始化它。这种方式可以加速在当前作用局中对foo的访问。

--4.3控制结构
for有两种形式,数字型for和泛型for

数字型for

for var = exp1, exp2, exp3 do
    <body>
end

var从exp1变化到exp2,步长为exp3。exp3为可选,若不指定,则默认为1
注意:
1三个表达式在for开始前一次性求值。
2控制变量会被自动声明为local。
若要在循环结束后访问控制变量的值,需要将其保存到另一个变量中

local found = nil
for i = 1,#a do
    if a[i] < 0 then
        found = i
        break
    end
end
print(found)

泛型for
通过一个迭代器函数来遍历所有的值,如ipairs

for i,v in ipairs(a) do
    print(v)
end

数字型for和泛型for的共同点:
1循环变量是循环体的内部变量
2绝不应该对循环变量做任何赋值

时间: 2024-10-26 01:08:41

第四章 语句 Lua程序设计笔记的相关文章

第五章 函数 Lua程序设计笔记

--第五章 函数若函数只有一个参数,并且此参数时字符串或table,则圆括号可有可无 print "hello world" <--> print("hello world") f {x = 10, y = 20} <--> f ({x = 10, y = 20}) --5.1多重返回值 function foo0 () end function foo1 () return "a" end function foo2 (

第三章 表达式 Lua程序设计笔记

--第三章 表达式--3.1 算数操作符--3.2 关系操作符其计算结果是true或false.如果两个值的类型不同,则Lua认为他们不相等.nil只与自身相等.对于table.userdata和函数,Lua作引用比较,只有当它们引用同一个对象时,才认为它们相等. --3.3逻辑操作符--3.4字符串连接Lua中字符串是不可变的值,连接操作符只会创建一个新字符串,而不会对员操作数进行修改.--3.5优先级Lua二元操作符中只有^ 和..是右结合,其他都是左结合 --3.6table构造式{} 混

Java 线程第三版 第四章 Thread Notification 读书笔记

一.等待与通知 public final void wait() throws InterruptedException 等待条件的发生. public final void wait(long timeout) throws InterruptedException 等待条件的发生.如果通知没有在timeout指定的时间内发生,它还是会返回. public final void wait(long timeout, int nanos) throws InterruptedException

Delphi基本之pascal语法(第四章.循环结构程序设计)

第四章.循环结构程序设计 一.FOR语句格式:1.FOR <循环变量>:=<初值> TO <终值> DO <语句>: 2.FOR<循环变量>:=<终值> DOWNTO <初值> DO <语句>.[例1]:输入10个数,求最大值.最小值.和.及平均值. PROGRAM ten(input,output);VAR a,s,max,min,avg:real; i:integer;BEGIN write('please

第六章 深入理解函数 Lua程序设计笔记

--第六章 深入理解函数Lua中函数是"第一类值",与其他传统类型有相同的权利:可以储存到变量或table中,可以作为函数实参传递,还可以作为函数的返回值. 函数的标准定义: foo = function(x) return x*2 end 一个函数定义实际上就是一条赋值语句,这条语句创建了一种类型为"函数"的值,并将这个值赋予一个变量. --6.1closure(闭合函数) function newCounter() local i = 0 return func

第一章 开始 Lua程序设计第二版笔记

--第一章 开始--1.1chunk 程序块chunk大小可以任意,一个源代码文件或交互模式中的一行代码都是chunk --1.2词法规范标识符通常保留下划线开头,作为Dummy Variable使用. --1.3全局变量Lua中访问一个未初始化的变量不会引发错误,访问结果是一个nil print(b) -->nil

第十三章 元表与元方法 Lua程序设计笔记

--第十三章 元表与元方法Lua中每个值都有一个表.table和userdata可以有各自独立的元表,其他类型的值共享一个元表.Lua中只能设置table的元表.若要设置其他类型的值的元表,则必须通过C代码来完成. --13.1算数类型的元方法 Set = {} local mt = {} --创建元表 function Set.new(l)--根据参数列表中的值创建一个新的集合 local set = {} setmetatable(set, mt) --设置元表 for _,v in ipa

JAVA-初步认识-第四章-语句-函数-格式

函数名在定义时,如果是两个以上的单词构成,第一个单词的首字母是小写,第二个是大写.这和标识符的定义不符.用小括号来确定函数中用到的数据.参数的数目不确定,也可以不定义? return有两个作用,一个是返回值,另一个是结束函数.所以在return 返回值; 后面不要再书写语句,执行不到,会报错.

Javascript模式(第四章函数)------读书笔记

一 背景 js函数的两个特点:1 函数是第一类对象(first-class object):2 函数可以提供作用域 1 函数是对象: 1 函数可以在运行时动态创建,还可以在程序执行过程中创建 2 可以被赋值给变量,还可以被删除 3 可以作为参数传递给别的函数,可以作为返回值,被别的函数返回, 4 可以拥有自己的属性和方法 2 由于JS没有块级作用域的概念,因此在涉及到控制变量作用域的时候,函数是必不可少的工具 1.1 消除术语歧义:我们来看一下命名函数表达式.你们函数表达式以及函数声明的定义 1