Если тогда с несколькими выражениями OCaml - PullRequest
0 голосов
/ 10 ноября 2018

Как я могу кодировать в OCaml что-то вроде этого (main () в C)

for (i=0; i<y; i++)
    if (x==5)
    {
        y=i;
        return true;
    }

Будет возвращено логическое значение True, а y будет равно соответствующему значению i.

В основном, в OCaml мне было интересно, если бы вы могли иметь, если как:

for i=0 to y-1 do
        if x=5 then
        begin 
            y=i
            true
        end
        else ()
done;;

Я знаю, что строки между begin-end не правильно реализованы. Я даже не знаю, возможно ли то, что я хочу сделать в OCaml. Если вы тот, у кого есть знания по этому вопросу, пожалуйста, поделитесь ими со мной. Спасибо!

1 Ответ

0 голосов
/ 10 ноября 2018

Если ваш вопрос касается досрочного возврата из цикла for, вот как вы это сделаете:

exception Break of int

let n =
  try
    for i = 0 to 5 do
      if i mod 2 = 0 then
        raise (Break i)
    done;
    0
  with
    Break i -> i

Вы также можете назначить ячейку ref вместо передачи значения в исключении, если это лучше подходит для вашего варианта использования. Но это не тот код, который вы обычно пишете в OCaml. Попытка эмулировать C в OCaml - почти всегда плохая идея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...