Invalid_argument "String.sub / Bytes.sub"
Invalid_argument "String.sub / Bytes.sub"
我正在做的练习有一个小问题。
我尝试递归地计算字符串中的元音,但出现了这个奇怪的错误。
有人可以向我解释为什么吗?
let rec nb_voyelle = function chaine ->
if chaine == "" then
0
else
let length = (String.length chaine)-1 in
let p_length = String.sub chaine 0 length in
match chaine.[length] with
| 'a' | 'e' | 'i' | 'o' | 'u' | 'y' -> 1 + nb_voyelle p_length
| _ -> 0 + nb_voyelle p_length
;;
答案是我在最后一个案例中使用“==”来比较字符串,这不是测试两个元素之间相等性的良好普遍性。
因此,情况 (String.sub "" 0 -1) 发生并且函数无法引发此错误。
我正在做的练习有一个小问题。 我尝试递归地计算字符串中的元音,但出现了这个奇怪的错误。 有人可以向我解释为什么吗?
let rec nb_voyelle = function chaine ->
if chaine == "" then
0
else
let length = (String.length chaine)-1 in
let p_length = String.sub chaine 0 length in
match chaine.[length] with
| 'a' | 'e' | 'i' | 'o' | 'u' | 'y' -> 1 + nb_voyelle p_length
| _ -> 0 + nb_voyelle p_length
;;
答案是我在最后一个案例中使用“==”来比较字符串,这不是测试两个元素之间相等性的良好普遍性。
因此,情况 (String.sub "" 0 -1) 发生并且函数无法引发此错误。