Add branches with the if, elif and else keywords. Test conditions in programs.
If, elif. The forest has many trees, a pond, and some frogs in the pond. Are there 2 frogs, or 3 frogs? With a conditional statement we could test this information.
In our programs we usually use ifs to execute statements inside the blocks. But in F# we can use an if-construct to return a value. It is part of an expression.
An example. This program uses an if, elif, else construct. It first creates a string. Then it tests the length of this string in the if-statement.
If then: We must use the "then" keyword after the if-condition. A "then" is also required for an elif, but not an else.
Equals: We use a single equals sign to test for equality in an expression. The expression of an if-statement must be in parentheses.
F# program that uses if, elif and else
let animal = "bird"
// Test the length of the string.
if (animal.Length = 1) then
// Not reached.
printfn "A"elif (animal.Length = 2) then
// Not reached.
// This statement is reached.
If inside let. An if-statement can be used to return a value (as an expression). We can embed an if in more complex statements. Here we assign the value of "result" with an if.
Info: The program sets the value of result to 1 if count is equal to or greater than 200. It also has two other conditions.
F# program that uses if inside let statement
let count = 50
// Use an if, elif, else construct within a variable assignment.
let result =
if count >= 200 then 1
elif count <= 100 then 2
// Write results.
printfn "%A" count
printfn "%A" result
Not. There is no "!=" operator for ints in F#. To see if an int does not equal a value, we use the equals operator and then surround that expression with the "not" operator.
F# program that uses if-not
let code = 10
// Use an if-not statement to test a variable.
ifnot (code = 5) then
printfn "Not five!"
Match versus if. We can write a logical test with a match or an if-expression. The syntax for match is closer to a "switch" in C-like languages. A match may be easier to use an expression.
TestPrint: This statement creates a function that tests its argument "v" and prints a statement based on its value. It uses "match."
TestPrintIf: This does the same thing but uses an if-statement. You can see this version looks more like C# or C code.
F# program that uses match, if expressions// We can use a match to handle the argument.
let testPrint v =
match v with
| 0 | 1 | 2 -> printfn "[MATCH] branch A: %A" v
| _ -> printfn "[MATCH] branch B: %A" v
// We can use an if-else to handle the argument.
let testPrintIf v =
if v = 0 || v = 1 || v = 2 then
printfn "[IF] branch A: %A" v
printfn "[IF] branch B: %A" v
// Test functions.
[MATCH] branch A: 0
[MATCH] branch B: 9
[IF] branch A: 0
[IF] branch B: 9
Convert bool to int. F# offers no C-like ternary operator. Instead, we use inline if-expressions. With an if-expression we can convert a bool to an int.Convert: bool to int
A review. An if-block operates in F# much like in other languages. But it has a special feature. It can evaluate an if as an expression, which can return values or be used in assignments.