Оператор if после математической операции Синтаксическая ошибка в OCaml - PullRequest
0 голосов
/ 16 января 2019

Привет, я новичок в OCaml и работаю над проблемой. Метод ниже не то, что я должен сделать, но я сузил ошибку в моем коде до этого. Мне было интересно, почему это работает, если я уберу x = x *. 2.0, но при добавлении я получаю синтаксическую ошибку в операторе if

let idk (x: float) =
x = x *. 2.0
if (x > 0.0) then true else false ;;

1 Ответ

0 голосов
/ 16 января 2019

Я подозреваю, что вы думаете о x = x *. 2.0 как о выражении, которое меняет значение x. Но в OCaml значение переменной нельзя изменить.

В выражениях OCaml = - оператор сравнения на равенство. Так что x = x *. 2.0 это логическое выражение. То есть, это либо правда, либо ложь.

Поскольку вы не хотите, чтобы два выражения следовали друг за другом, подробности синтаксической ошибки, вероятно, бесполезны.

Хотя вы не можете изменить значение переменной, вы можете иметь любое количество локальных переменных, которые вам нравятся. Способ объявления локальной переменной выглядит следующим образом:

let my_local_variable = expression1 in expression2

Чтобы получить эффект, который вы смотрите далеко (я думаю), вы можете написать что-то вроде этого:

let idk (x: float) =
   let local_x = x *. 2.0 in
   if (local_x > 0.0) then true else false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...