微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SML:读取一行整数时出现异常

如何解决SML:读取一行整数时出现异常

fun parse file =
 let
(* A function to read an integer from specified input. *)
     fun readInt input =
   Option.valOf (TextIO.scanStream (Int.scan StringCvt.DEC) input)


 
          in
              (Array.update(acc,readInt inStream,f+1); readInts (i - 1) sumd acc has)
          end
 in
      (a,b,readInts b 0 empty [])
 end
(* ................................................................*)

我想从包含 2 行的文本文件中读取内容
一个将包含 2 个整数 a,b
第二个将包含 b 个整数 x1,x2,.. xb.
例如,它将采用这种形式:

    a b 
    n1 n2 n3 .. nb

我收到此错误消息:

uncaught exception Option
  raised at: Basis/Implementation/option.sml:19.25-19.31  

第 19 行:如果有帮助的话,基本上是 readInts i sumd acc has
我的代码的问题是因为 readInts 函数我想逐个读取整数,而不是一次读取整行(所以我不能使用像 "explode" 这样的函数) (这不像我被迫那样做,但是读取一次并形成我想要的数组 acc 和 list 具有移动时间,而不是读取和存储 b 整数在缓冲区列表中,然后重新运行列表形成我想要的数据)。 你能看出我的代码有什么问题吗?

解决方法

readInt 的第二种情况下,您调用 readInts 两次,将流推进到两个数字而不是一个数字。由于您的输入中有 b 个数字,但执行此操作 b 次,您尝试读取 2 * b 个数字并且最终无法读取。当这种情况发生时,TextIO.scanStream (Int.scan StringCvt.DEC) inputNONE,所以 Option.valOf 加注 Option

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。