Espressioni condizionali: if...then...else (F#)
L'espressione if...then...else consente di eseguire diversi rami di codice e restituisce anche un valore diverso in base all'espressione booleana specificata.
if Boolean-expression then expression1 [ else expression2 ]
Note
Nella sintassi precedente l'oggetto expression1 viene eseguito quando l'espressione booleana restituisce true; in caso contrario, viene eseguito l'oggetto expression2.
A differenza degli altri linguaggi, il costrutto if...then...else è un'espressione, non un'istruzione. Ciò significa che produce un valore che corrisponde al valore dell'ultima espressione nel ramo eseguito. I tipi di valori prodotti in ogni ramo devono corrispondere. Se non è presente un ramo else esplicito, il tipo è unit. Se, pertanto, il tipo del ramo then è qualsiasi tipo diverso da unit, deve essere presente un ramo else con lo stesso tipo restituito. Quando si concatenano insieme le espressioni if...then...else, è possibile utilizzare la parola chiave elif anziché elseif, in quanto sono equivalenti.
Esempio
Nell'esempio seguente viene illustrato come utilizzare l'espressione if...then...else.
let test x y =
if x = y then "equals"
elif x < y then "is less than"
else "is greater than"
printfn "%d %s %d." 10 (test 10 20) 20
printfn "What is your name? "
let nameString = System.Console.ReadLine()
printfn "What is your age? "
let ageString = System.Console.ReadLine()
let age = System.Int32.Parse(ageString)
if age < 10
then printfn "You are only %d years old and already learning F#? Wow!" age