我不理解这个 Lua 示例

function maximum (a)
  local mi = 1          -- 最大值索引
  local m = a[mi]       -- 最大值
  for i,val in ipairs(a) do
    if val > m then
      mi = i
      m = val
    end
  end
  return m, mi
end

print(maximum({8,10,23,12,5}))--> 23   3

我无法理解这个示例,有没有人可以解释一下?它太令人困惑了,Programming in Lua 第一版总是提供一些困难的例子。

点赞
用户440558
用户440558

这个函数接受一个参数,参数是一个存储在变量a中的表(table)。

该函数循环迭代表a中的每个值,使用ipairs函数从表中返回索引和值(暂存在ival中)。

在循环内部,对比表中的值与m的大小,如果valm大,那么m的值被赋为val的值,mi被赋为i的值。

然后,该函数返回两个值mmi

简而言之,该函数的作用是在传递的表中查找最大值及其索引。

2019-12-29 14:41:37