Source: 5.16 if
Условные выражения начинаются с ключевого слова if ,далее следует само условие в круглых скобках () и выражение, которое будет вычислено в случае выполнения условия:
1 |
if (condition) expression; |
Условие имеет тип Bool . Это означает, что если значение выражения, записанного в condition , является истиной true , то будет выполнено то, что далее написано в expression . Иначе — не выполнится.
После expression может следовать ключевое слово else для задания другого выражения, которое должно быть вычислено, если условие не выполняется:
1 |
if (condition) expression1 else expression2; |
Здесь expression2 может состоять из еще одного if -выражения:
1 2 3 |
if (condition1) expression1 else if(condition2) expression2 else expression3 |
Если значение, вычисляемое if -выражением является необходимым для дальнейших вычислений, к примеру
1 |
var x = if (condition) expression1 else expression2; |
то возвращаемые значения должны иметь совместимые типы. Если в данной конструкции отсутствует выражение else , возвращается выражение типа Void .
Пример. Программа сравнивает значение двух выражений:
1 2 3 4 5 6 7 8 9 10 11 |
class Test { static function main() { var x = 5, y = -3; if(2 * x < y * y) trace("<") else if(2 * x > y * y) trace(">") else trace("="); } } |
— последний пример можете как-то понятнее объяснить? И «объединять» тут не совсем уместно. Скорее имеется в виду, что значения должны быть совместимых типов.
— Либо сделайте последний код inline, либо ставьте точку с запятой в конце.
— Потерялась ссылка на Unification.
— Где собственный пример и собственный текст? Если бы вы попробовали запустить хоть какой-то свой пример для последнего случая, то не писали бы этой чепухи про «типизатор гарантирует что типы…» Как вы думаете, кто или что такое «typer» в этом контексте? Запустите пример
и разберитесь, кто там что гарантирует 🙂
Вы правы. В последнем примере действительно подразумевалась совместимость типов.
Добавила свой пример и свой текст.
Что такое Unification? Ссылка на оригинальную статью в самом верху моей статьи, а ссылки на что либо еще в задании не упоминались.
If the value of an if expression is required, e.g. for var x = if(condition) expression1 else expression2, the typer ensures that the types of expression1 and expression2 unify.
Последнее слово этого текста является гиперссылкой на раздел учебника 3.5. Unification.
— В тексте вы форматируете ключевые слова как формулы. Но ведь это программный код. Т.е. логично писать if, а не [latex]if[/latex]. Аналогично с else, Void и т.п.
— Сделайте, пожалуйста, ссылки на наш сайт, а не на сайт с документацией на английском. Даже если нужной статьи пока нет, можно догадаться как она будет называться. Например, относительная ссылка на 3.6 Type Inference будет выглядеть как «3-6».