Мне нужно проверить все возможные комбинации в 5-элементном массиве в OCaml, если какая-либо комбинация соответствует условию, я должен остановиться для циклов и вернуть этот массив, но не легко вернуть что-то в для ...«Перерыв» для цикла в OCaml
у меня есть этот код:
let myfunction t =
let arraycolours = Array.make 5 W in
try
for i=0 to 3 do
Array.set arraycolours 0 (inttocolour i);
for j=0 to 3 do
Array.set arraycolours 1 (inttocolour j);
for k=0 to 3 do
Array.set arraycolours 2 (inttocolour k);
for l=0 to 3 do
Array.set arraycolours 3 (inttocolour l);
for m=0 to 3 do
Array.set arraycolours 4 (inttocolour m);
if test arraycolours = t then raise Exit
done
done
done
done
done
with Exit -> arraycolours;;
но говорит: Ошибка: Это выражение имеет тип цвета массив но выражение ожидалось единицы типа
Как я могу вернуться массив, который соответствует co ndition?
Это не работает, я сделал исключение ExitArray из массива цветов ;; " а затем «поднять (ExitArray arraycolores)» и, наконец, «с помощью ExitArray arraycolores-> arraycolores ;;" но он все еще говорит: «Ошибка: это выражение имеет тип color array , но ожидалось выражение от единицы типа« – gmv92
не связано ли это с тем, что конструктор if не имеет ветви else? вы должны добавить его: else arraycolours - таким образом не будет больше несоответствия между результатом, созданным конструкциями lop (который является единицей в вашем текущем коде) и исключением. –
Я так не думаю, что я поставил другое с тем же (raise (ExitArray arraycolores)) только для тестирования, он говорит то же самое – gmv92