首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我该如何在lua为我做靶场的事?

我该如何在lua为我做靶场的事?
EN

Stack Overflow用户
提问于 2022-08-14 11:48:11
回答 2查看 112关注 0票数 1

我想知道在卢阿该怎么做

Python:

代码语言:javascript
复制
for i in range(10)
 print("Hello World")
EN

回答 2

Stack Overflow用户

发布于 2022-08-14 19:33:56

Lua有一个特殊的“数字for”循环。有两种形式:

代码语言:javascript
复制
for i = from, to do ... end

等同于Python中的for i in range(from, to + 1),因为Python有一个独占的结束索引,并且

代码语言:javascript
复制
for i = from, to, increment do ... end

相当于Python中的for i in range(from, to + increment, increment)

Python循环允许省略from参数,只提供(独占) to参数,如您的示例所示:

代码语言:javascript
复制
for i in range(10):
    print(i)

这是而不是,相当于

代码语言:javascript
复制
for i = 1, 10 do print(i) end

在Lua中,Python将从0开始,直到9,而Lua循环从1开始,一直到10。如果您不需要索引--并且只需要to多次迭代--或者索引应该是Lua表、字符串等的索引,那么应该使用从1到10的循环(两者都包括在内)。

与Python在Lua中的for i in range(to)的适当等效循环是

代码语言:javascript
复制
for i = 0, to - 1 do ... end

最后,您可以实现自己的range迭代器。但是,由于函数调用开销,这将显示出更糟糕的性能。

代码语言:javascript
复制
function range(...)
    local n_args = select("#", ...)
    local increment = 1
    if n_args == 1 then
        from, to = 0, ...
    elseif n_args == 2 then
        from, to = ...
    elseif n_args == 3 then
        from, to, increment = ...
    else error"range requires 1-3 arguments" end

    local i = from
    return function()
        if i >= to then return end -- note: to is exclusive
        local prev_i = i
        i = i + increment
        return prev_i
    end
end

用法就像Python的range

代码语言:javascript
复制
for i in range(stop) do ... end
for i in range(start, stop) do ... end
for i in range(start, stop, increment) do ... end
票数 3
EN

Stack Overflow用户

发布于 2022-08-14 11:51:44

其内容应如下:

代码语言:javascript
复制
for i=1,10 do print(i) end

Lua循环遵循以下模式:

代码语言:javascript
复制
for init,max/min value, increment
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73351382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档