Ci deve essere un qualche modo di dire dove finisce la condizione e inizia il ramo. Ci sono molti modi diversi per farlo.
In alcune lingue, non ci sono condizioni affatto , ad es. in Smalltalk, Self, Newspeak, Io, Ioke, Seph e Fancy. La ramificazione condizionale viene semplicemente implementata come un metodo normale come qualsiasi altro metodo. Il metodo è implementato su oggetti booleani e viene richiamato su un booleano. In questo modo, la condizione è semplicemente il destinatario del metodo e i due rami sono due argomenti, ad es. in Smalltalk:
aBooleanExpression ifTrue: [23] ifFalse: [42].
Nel caso in cui tu abbia più familiarità con Java, questo è equivalente al seguente:
aBooleanExpression.ifThenElse(() -> 23, () -> 42);
Nella famiglia di lingue Lisp, la situazione è simile: i condizionali sono solo funzioni normali (in realtà, macro) e il primo argomento è la condizione, il secondo e il terzo argomento sono i rami, quindi sono solo normali argomenti di funzione, e non c'è nulla di speciale necessario per delimitarli:
(if aBooleanExpression 23 42)
Alcune lingue usano parole chiave come delimitatori, ad es. Algol, Ada, BASIC, Pascal, Modula-2, Oberon, Oberon-2, Oberon attivo, Component Pascal, Zonnon, Modula-3:
IF aBooleanExpression THEN RETURN 23 ELSE RETURN 42;
In Ruby, puoi utilizzare una parola chiave o un separatore di espressioni (punto e virgola o nuova riga):
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
Vai richiede che i rami siano blocchi e non consentano espressioni o istruzioni, il che rende le parentesi graffe obbligatorie. Pertanto, le parentesi non sono obbligatorie, sebbene sia possibile aggiungerle se lo si desidera; Perl6 e Rust sono simili in questo senso:
if aBooleanExpression { return 23 } else { return 42 }
Alcune lingue usano altri caratteri non alfanumerici per delimitare la condizione, ad es. Python:
if aBooleanExpression: return 23
else: return 42
La linea di fondo è: hai bisogno di un qualche modo di dire dove finisce la condizione e inizia il ramo. Ci sono molti modi per farlo, le parentesi sono solo una di quelle.