F # - Precedência de operadores
A tabela a seguir mostra a ordem de precedência dos operadores e outras palavras-chave de expressão na linguagem F #, da precedência mais baixa para a precedência mais alta.
| Operador | Associatividade |
|---|---|
| Como | Certo |
| quando | Certo |
| | (tubo) | Esquerda |
| ; | Certo |
| deixei | Não associativo |
| função, diversão, combinar, tentar | Não associativo |
| E se | Não associativo |
| → | Certo |
| : = | Certo |
| , | Não associativo |
| ou, || | Esquerda |
| &, && | Esquerda |
| <op,> op, =, | op, & op | Esquerda |
| &&&, |||, ^^^, ~~~, <<<, >>> | Esquerda |
| ^ op | Certo |
| :: | Certo |
| :?>,:? | Não associativo |
| - op, + op, (binário) | Esquerda |
| * op, / op,% op | Esquerda |
| ** op | Certo |
| fx (aplicativo de função) | Esquerda |
| | (correspondência de padrão) | Certo |
| operadores de prefixo (+ op, -op,%, %%, &, &&,! op, ~ op) | Esquerda |
| . | Esquerda |
| f (x) | Esquerda |
| f <tipos> | Esquerda |
Exemplo
let a : int32 = 20
let b : int32 = 10
let c : int32 = 15
let d : int32 = 5
let mutable e : int32 = 0
e <- (a + b) * c / d // ( 30 * 15 ) / 5
printfn "Value of (a + b) * c / d is : %d" e
e <- ((a + b) * c) / d // (30 * 15 ) / 5
printfn "Value of ((a + b) * c) / d is : %d" e
e <- (a + b) * (c / d) // (30) * (15/5)
printfn "Value of (a + b) * (c / d) is : %d" e
e <- a + (b * c) / d // 20 + (150/5)
printfn "Value of a + (b * c) / d is : %d" e
Quando você compila e executa o programa, ele produz a seguinte saída -
Value of (a + b) * c / d is : 90
Value of ((a + b) * c) / d is : 90
Value of (a + b) * (c / d) is : 90
Value of a + (b * c) / d is : 50