Lua 中有类似 xrange 的函数吗?

有没有类似 Python 中 xrange 的 Lua 函数,这样我就可以像下面这样做:

for i in xrange(10) do
    print(i)
end

这与其他问题不同,因为他正在寻找条件测试器,但我不是在寻找条件测试器。

点赞
用户1823636
用户1823636

如果你想迭代数字:

for i = 0,9 do
    print(i)
end

另一种方法是创建自己的迭代器:

function range(from, to, step)
  step = step or 1
  return function(_, last)
    local next = last + step
    if step > 0 and next < to or step < 0 and next > to or step == 0 then
      return next
    end
  end, nil, from - step
end

然后使用它:for i in range(0, 10) do print(i) end

另外,你可以访问 http://lua-users.org/wiki/RangeIterator

2015-09-29 14:44:14
用户3735873
用户3735873
# xrange 函数实现

该函数用于生成一系列连续的整数,格式为 `range(start, stop, step)`。

```lua
function xrange(a, b, step)
  step = step or 1  -- 如果没有指定步长,则默认为1
  if b == nil then a, b = 1, a end  -- 如果只传入一个参数,则默认从1开始
  if step == 0 then error('ValueError: xrange() arg 3 must not be zero') end  -- 步长不能为0,否则报错
  if a + step < a then return function() end end  -- 防止整数溢出
  a = a - step
  return function()
           a = a + step
           if a <= b then return a end  -- 当 a 小于等于 b 时返回 a,否则返回 nil
         end
end
2015-09-29 22:21:48