加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Lua 基本语法

发布时间:2020-12-14 21:55:14 所属栏目:大数据 来源:网络整理
导读:11. 创建一个迭代器 t = { 1 , 2 , 3 , 4 , 5 } function numIter (t,start) i = start return function () i = i + 1 if t[i - 1 ] then return i - 1 ,t[i - 1 ] else return nil end end end for k,v in numIter(t, 1 ) do print (k,v) end 12. dofile lo

11. 创建一个迭代器

t = {1,2,3,4,5}

function numIter(t,start)
  i = start
  return function()
    i = i + 1
    if t[i - 1] then
      return i - 1,t[i - 1]
    else
      return nil
    end
  end
end

for k,v in numIter(t,1) do
  print(k,v)
end

12. dofile loadfile load

  • dofile 加载一个外部的 lua文件并执行
  • loadfile 加载一个外部的 lua文件但是先不执行
  • load 从字符串创建 lua代码并执行
-- 这一段保存在 external.lua 文件中
for i = 0,10 do
  print (i)
end
return 1000
-- 这一段是在 main.lua 中
filepath = "/Workspace/learn/lua/external.lua"

-- 这里会直接执行 external.lua
dofile(filepath) 
-- 加载external.lua但是不执行
f = loadfile(filepath)
-- f()调用的时候才会真正执行 external.lua
f()
-- 因为 external.lua有返回值,这里会执行并且打印出返回值
print(f())

g = load("print('I love you')") --从字符串创建代码
g()
-- 这里看一个问题
x = 10
local x = 100

function test_print_x()
    x = x + 1
    print(x)
end

test_print_x() -- 这里会打印出101,这里用的是局部变量 x

load_test_print_x = load("x = x + 1; print(x)")
load_test_print_x() -- 这里会打印出11,这里用的是全局的 x,

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读