追猫的蝴蝶 2021-12-30 10:15 采纳率: 0%
浏览 17
已结题

Lua中,用户如何告诉io.read函数输入已经到达末尾了

我在学习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呢

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 1月7日
    • 创建了问题 12月30日

    悬赏问题

    • ¥100 求一个,王者荣耀查询隐藏战绩的教材,爬虫代码
    • ¥60 Cocos creator缓动问题
    • ¥40 微信小程序 使用vant组件ActionSheet 下拉面板,内容区域滚动会触发。scroll-view自定义下拉刷!即使设置停止下拉刷新也不行。
    • ¥15 专业问题提问,7月5号2点之前
    • ¥25 使用cube ai 导入onnx模型时报错
    • ¥15 关于#微信小程序#的问题:用一个网页显示所有关联的微信小程序数据,包括每个小程序的用户访问量
    • ¥15 root的安卓12系统上,如何使apk获得root或者高级别的系统权限?
    • ¥20 关于#matlab#的问题:如果用MATLAB函数delayseq可以对分数延时,但是延时后波形较原波形有幅度上的改变
    • ¥15 使用华为ENSP软件模拟实现该实验拓扑
    • ¥15 通过程序读取主板上报税口的数据