Difference between revisions of "Else"
(→More statements in "if then else" statement: fix explanation and example for nested if..then..else) |
|||
Line 47: | Line 47: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | In this case, the "else" applies to "if | + | Having nested if..then..else statement can easlily lead to ambiguity: which else belongs to which if? |
+ | In this case, the "else" applies to "not if b" | ||
<syntaxhighlight> | <syntaxhighlight> | ||
if a then | if a then | ||
− | if b then | + | if b then |
begin | begin | ||
− | + | DoB; | |
end | end | ||
else | else | ||
begin | begin | ||
− | + | DoNotB; | |
end; | end; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
In this case, the "else" applies to "if b". If this causes ambiguity, it can be resolved by coding an "empty" else statement: | In this case, the "else" applies to "if b". If this causes ambiguity, it can be resolved by coding an "empty" else statement: | ||
<syntaxhighlight> | <syntaxhighlight> |
Revision as of 14:24, 2 April 2018
│
Deutsch (de) │
English (en) │
español (es) │
suomi (fi) │
français (fr) │
русский (ru) │
Else at Language Reference
Else is keyword which introduces the action to do if the condition is false.
If then else
if (condition)
then true_statement
else false_statement;
The value of condition is evaluated, if it resolves to true, the true_statement is executed, otherwise the false_statement is executed. The value of condition must resolve to a boolean value or an error occurs.
More statements in "if then else" statement
If you need two or more statements for true_statement or false_statement, then the group of statements must be placed within a begin ... end Block.
if boolean_condition then
begin
statement_one;
statement_two;
end
else
begin
statement_three;
statement_four;
end;
Notice that before the else keyword, no semicolon (;) is allowed. In the above example the first "end" statement is not followed by a semicolon but the last one is.
The following code wil not compile:
if a then
if b then
begin
(..)
end;
else // Fatal: Syntax error, ";" expected but "ELSE" found
begin
(..)
end;
Having nested if..then..else statement can easlily lead to ambiguity: which else belongs to which if? In this case, the "else" applies to "not if b"
if a then
if b then
begin
DoB;
end
else
begin
DoNotB;
end;
In this case, the "else" applies to "if b". If this causes ambiguity, it can be resolved by coding an "empty" else statement:
if a then
if b then
begin
(..)
end
else
else
begin
(..)
end
Keywords: begin — do — else — end — for — if — repeat — then — until — while