我正在试图编译这段代码,它在最后一行中返回一个语法错误:(知道原因吗?)
let nth_index str c n =
let i = 0 in
let rec loop n i=
let j = String.index_from str i c in
if n>1 then loop (n-1) j
else
j
发布于 2018-03-15 05:22:36
最外层的let
不需要匹配的in
。它给出了最高级的定义。
然而,其他三个let
确实需要一个匹配的in
。而且你只有两个in
。
发布于 2018-03-15 14:06:35
因此,根据@Jeffrey的回复,你可以写:
let nth_index str c n =
let rec loop n i =
let j = String.index_from str i c in
if n>1 then loop (n-1) j else j
in loop n 0
但是看看你的算法,也许你想用倒数第二行写if n>1 then loop (n-1) (j+1) else j
。如果是,请注意此方法可能引发异常,所以好的做法是将其命名为nth_index_exn
。
https://stackoverflow.com/questions/49292004
复制相似问题