function mult(a, b)
local c = {}
for i = 1, #a do
local resultline = {} -- 即 c[i]
for k, va in pairs(a[i]) do -- 'va' 即 a[i][k]
for j, vb in pairs(b[k]) do -- 'vb' 即 b[k][j]
local res = (resultline[j] or 0) + va * vb
resultline[j] = (res ~= 0) and res or nil
end
end
c[i] = resultline
end
return c
end
代码使用 pairs
来处理稀疏的元素,这样可以只访问非 nil 的元素。此外,代码还删去了结果中偶然为0的元素。