Lua语法碎片

1、table的长度获得

用#来操作

2、lua中获取元素类型

print(type(label))
torch中的Tensor的type(a)和a:type()是等价的,但不意味着对于lua的数据类型这也是等价的

3、unpack

a = {1,2,3,4,5,6}
b = unpack(a)  --b=1
b,c,d,e = unpack(a)   --b =1,c=2,d=3,e=4
1+unpack(a)    -- 结果是2,只会和第一个元素相加
4、闭包

对于闭包的详细介绍,参考的是博客点击打开链接

对于闭包粗浅的理解

闭包 = 函数+upvalue

upvalue对应的是非局部变量,内部的嵌套函数可以去访问这一个非局部变量的值

在lua中函数是第一类值,和字符串数字 等是同等地位的,运行期被创建,而不是编译期间(代码来自博客http://blog.csdn.net/maximuszhou/article/details/44280109)

function f1(n)  
   --函数参数n也是局部变量  
   local function f2()  
      print(n)   --引用外部函数的局部变量  
   end  
   return f2  
end  
  
g1 = f1(2015)  
g1() -- 打印出2015  
  
g2 = f1(2016)  
g2() -- 打印出2016 
其中g1和g2就是闭包,他们由函数原型f2和对应的upvalue n组成,具体细节参考博客(链接已给)

5、切片操作

print(out[{1,{},{}}])
6、最大值

math.max(unpack(max_value_container))  #max value of table

7、pairs和ipairs的区别

Set = {}
Set.new = function (t)

    local set = {}
    for _, l in ipairs(t) do set[l] = true end

    return set
end
s2 = Set.new{1,10, 20, 30, 40, 50}
print(s2)                                         --输出键1,10,20,30,40,50
print(type(s2))                                   --table
for k, l in pairs(s2) do print(l) print(k) end    --true 1 true 20 true 10 true 30 true 40 true 50
for k, l in ipairs(s2) do print(l) print(k) end   --true 1
pairs回依次输出键和对应的键值,ipairs遇到不连续的键的时候就会停止输出





  • 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、付费专栏及课程。

余额充值