我在学习Lua时看到有个马尔可夫链算法,代码如下
function allwords()
local line = io.read()
local pos = 1
return function()
while line do
local s,e = string.find(line,"%w+",pos)
if s then
pos = e+1
return string.sub(line,s,e)
else
line = io.read()
pos = 1
end
end
return nil
end
end
-- 调用allwords函数,返回迭代器
for w in allwords() do
insert(prefix(w1,w2),w)
w1= w2; w2 = w
end
上面代码中在for循环中的insert和prefix函数都可以不用管,当成一个print输出
在for循环迭代器中调用allwords函数获取用户输入,但程序运行起来之后会一直卡在用户输入那里,一直在获取用户输入,请问应该输入什么字符才能结束输入,并运行后面的程序
io.read在读文件时,到了文件末尾读到nil会自动结束,但用户如何输入一个nil呢