0

这是我得到的错误,我不知道为什么:“错误:未绑定的记录字段标签长度”有人知道吗?

let rastavi str =
    let sublist = ref [] in
    let list = ref [] in
    for i = ((str.length str)1) [down]to 0 do
   if str.[i] =' '    then (str.[i] :: !sublist)
  else (list := (!sublist:: !list))   sublist = [] 
  done ;; 
4

1 回答 1

4

您正在使用 OO 表示法来获取字符串的长度。OCaml 使用函数式表示法。所以它看起来像这样:

String.length str

不像这样:

str.length (* OO notation, not in OCaml *)

编辑:

旁注:这个解决方案在很大程度上是解决这个问题的必要条件。如果你想学习 FP 思维方式,你应该尝试递归和不变地思考。由于这看起来像家庭作业,因此很可能是您想要的功能解决方案。

但是您的原始代码中还有一些其他问题:

  1. 您有两个彼此相邻的表达式,中间没有任何内容。如果你想“做”两件事,你需要用分号分隔它们;(但是,这是命令式的)

  2. 您正在使用=which 比较两个值是否相等。如果要为引用分配值,则需要使用:=. (命令式,再次。)

于 2012-04-23T18:50:38.127 回答