我正在尝试在lua中使用分隔符创建一个split()函数,当默认为空格时.默认工作正常.当我给函数分隔符时,问题就开始了.由于某种原因,它不会返回最后一个子字符串.功能:
function split(str,sep)
if sep == nil then
words = {}
for word in str:gmatch("%w+") do table.insert(words, word) end
return words
end
return {str:match((str:gsub("[^"..sep.."]*"..sep, "([^"..sep.."]*)"..sep)))} -- BUG!! doesnt return last value
end
Run Code Online (Sandbox Code Playgroud)
我尝试运行这个:
local str = "a,b,c,d,e,f,g"
local sep = ","
t = split(str,sep)
for i,j in ipairs(t) do
print(i,j)
end
Run Code Online (Sandbox Code Playgroud)
我得到:
1 a
2 b
3 c
4 d
5 e
6 f
Run Code Online (Sandbox Code Playgroud)
无法弄清楚bug在哪里......
到目前为止,我使用了 3 个 NOP 来“清理”管道。最近我遇到了 ISB 指令,它可以帮我做到这一点。查看arm信息中心,我注意到这个命令需要4个周期(在Cortex M0下),而3个NOP只需要3个周期。
我为什么要使用这个命令?它与 3 NOP 有什么不同?