Как назначить значение на основе условия в Ocaml? - PullRequest
3 голосов
/ 19 июля 2011

Я хотел бы выразить что-то вроде следующего:

if b then
  let value = ... in
else
  let value = .... in
let double = value * 2

Но, похоже, Ocaml не поддерживает этот синтаксис. Если я не хочу повторять let double = value * 2 часть, я должен определить value как ссылку?

Большое спасибо!

Ответы [ 2 ]

13 голосов
/ 19 июля 2011

Ваша проблема в том, что вы думаете об этом императивно (условно присваивать переменной), а не функционально (связать имя с результатом выражения):

let value = if b then ... else ... in
let double = value * 2
1 голос
/ 19 июля 2011

как уже упоминалось, функциональный подход обычно предпочтительнее.

Однако могут быть сценарии, в которых вы хотите использовать императивные функции ocaml:

let value = ref 2;;

begin
if 1=2 then
value := 4
else
value := 3
end;
let double = !value * 2

Обратите внимание, что нужно убедиться, что тип выражения в if-ветви и в else-ветви должен быть одинаковым - здесь unit - в противном случае компилятор жалуется (конечно).

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