Должен быть какой-то способ сказать, где кончается условие и начинается ветвь. Есть много разных способов сделать это.
В некоторых языках нет условными вообще , например , в Smalltalk, Self, новояз, Ио, Ioke, SEPH и Fancy. Условное ветвление просто реализуется как обычный метод, как и любой другой метод. Метод реализован на логических объектах и вызывается на логических объектах. Таким образом, условие является просто получателем метода, а две ветви являются двумя аргументами, например, в Smalltalk:
aBooleanExpression ifTrue: [23] ifFalse: [42].
В случае, если вы более знакомы с Java, это эквивалентно следующему:
aBooleanExpression.ifThenElse(() -> 23, () -> 42);
В семействе языков Lisp ситуация аналогична: условные выражения - это просто нормальные функции (на самом деле, макросы), а первый аргумент - это условие, второй и третий аргументы - это ветви, поэтому они являются просто обычными аргументами функции, и есть ничего особенного не нужно для их разграничения:
(if aBooleanExpression 23 42)
Некоторые языки используют ключевые слова в качестве разделителей, например, Algol, Ada, BASIC, Pascal, Modula-2, Oberon, Oberon-2, Active Oberon, Component Pascal, Zonnon, Modula-3:
IF aBooleanExpression THEN RETURN 23 ELSE RETURN 42;
В Ruby вы можете использовать ключевое слово или разделитель выражений (точка с запятой или новая строка):
if a_boolean_expression then 23 else 42 end
if a_boolean_expression; 23 else 42 end
# non-idiomatic, the minimum amount of whitespace required syntactically
if a_boolean_expression
23 else 42 end
# idiomatic, although only the first newline is required syntactically
if a_boolean_expression
23
else
42
end
Go требует, чтобы ветви были блоками, и не допускает выражения или операторы, что делает фигурные скобки обязательными. Поэтому круглые скобки не требуются, хотя вы можете добавить их, если хотите; Perl6 и Rust похожи в этом отношении:
if aBooleanExpression { return 23 } else { return 42 }
Некоторые языки используют другие не буквенно-цифровые символы для ограничения условия, например, Python:
if aBooleanExpression: return 23
else: return 42
Суть в следующем: вам нужен какой-то способ сказать, где заканчивается условие и начинается ветвь. Есть много способов сделать это, скобки - только один из них.
THEN
).