Неверный аргумент "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
;;
1 ответ
Решение
Ответ - я использовал "==" для сравнения строки в моем последнем случае, что не очень хорошо подходит для проверки равенства между двумя элементами.
Таким образом, происходит случай (String.sub "" 0 -1), и функция не может вызвать эту ошибку.