【Lua】语法笔记#2

控制语句

  • if 语句

if a < 0 then a = 0 end;

等价于

if (a < 0) {a = 0};
  • if else 语句

if a < b then return a else return b end;

等价于

if (a < b) return
    else return b;
end
  • else if 语句

if op == "+" then
    r = a + b
elseif op == "-" then
    r = a - b
elseif op == "*" then
    r = a * b
elseif op == "/" then
    r = a / b
else 
    error("invalid operation")
end
  • Lua 不支持 switch 语句!!!

循环语句

  • while 循环

local i = 1
while a[i] do
    print(a[i])
    i = i + 1
end
  • repeat-until 语句


    重复执行其循环体直到条件为真时结束。条件判断是在循环体之后做的,因此循环体至少执行一次。
    值得注意的是,在Lua中,一个声明在循环体中的局部变量的作用域包括了判断条件!
local sqr = x/2;
repeat
    sqr = (sqr + x/sqr) / 2;
    local error = math.abs(sqr^2 - x)
    until error < x/10000           --判断条件内仍可以
  • 数字型 for (numeric for)

for a = exp1, exp2, exp3 do 
    <执行体>
end

a 从 exp1 变化到 exp2,每次变化都以 exp3 作为步长递增 a,并执行一次 “循环体”。exp3是可选的,若不指定的话,会将步长默认为1.

  • 泛型 for (for in)

通过一个迭代器函数来遍历所有值:

-->打印数组a的所有值
local a = {1,2,3,4,5,6}

for i = 1, #a, 1 do print(a[i]) end;

pairsipairs 区别:

local tb = {
    [1] = "good",
    [3] = "hello",
    [5] = "world"
}

for k, v in pairs(tb) do
    print(k, v);
end

——输出结果——
1 good
5 world
3 hello

for k, v in ipairs(tb) do
    print(k, v);
end

——输出结果——
1 good

pairs 可以遍历表中所有的 key,并且除了迭代器本身以及遍历表本身还可以返回 nil
但是 ipairs 则不能返回 nil ,只能返回数字 0,如果遇到 nil 则退出。它只能遍历到表中出现的第一个不是整数的 key

注意 pairs 遍历表中所有的key不是按顺序来的 ! ! ! ! ! ! !

如果想按顺序输出则如下:

local tb = {
    "good",
    "hello",
    "world"
}

for k, v in ipairs(tb) do
    print(k, v);
end

——输出结果——
good
hello
world

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Scintilla中设置Lua语法,您需要执行以下步骤: 1. 下载Scintilla的最新版本,并将其解压缩到您的本地计算机上。 2. 下载Lua语法文件(例如,lua.api)并将其放置在Scintilla目录下。 3. 打开Scintilla目录中的SciTEGlobal.properties文件并添加以下行: ``` file.patterns.lua=*.lua lexer.$(file.patterns.lua)=lua ``` 4. 打开Scintilla目录中的lexers\Lua.properties文件并将其设置为以下内容: ``` # Lua lexer settings lexer.$(file.patterns.lua)=5 lexer.$(file.patterns.lua).keywords=and break do else elseif end false for function if in local nil not or repeat return then true until while lexer.$(file.patterns.lua).lexer.lpeg=lua lexer.$(file.patterns.lua).comment.line=-- lexer.$(file.patterns.lua).comment.box=--[[ ]] # Indentation settings statement.indent.$(file.patterns.lua)=1 block.start.$(file.patterns.lua)=1 block.end.$(file.patterns.lua)=-1 indent.opening.$(file.patterns.lua)=[(=*\[[ indent.closing.$(file.patterns.lua)=[)=*\]] ``` 5. 打开Scintilla目录中的properties\lua.properties文件并将其设置为以下内容: ``` # Lua properties filter.lualint=$(SciteDefaultHome)\tools\lualint.exe|*.lua|$(SciteDefaultHome)\tools\luac.exe|*.lua command.compile.*.lua=$(SciteDefaultHome)\tools\luac.exe $(FileNameExt) command.build.*.lua=$(SciteDefaultHome)\tools\lualint.exe $(FileNameExt) ``` 6. 保存文件并重新启动Scintilla。 现在,Scintilla将自动识别并高亮显示以.lua结尾的文件,并使用Lua语法进行解析。您还可以使用Scintilla的其他功能,例如自动缩进和代码折叠。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值