layout | title | partof | num | next-page | previous-page | language |
---|---|---|---|---|---|---|
tour |
Operadores |
scala-tour |
29 |
automatic-closures |
type-inference |
pt-br |
Qualquer método que tenha um único parâmetro pode ser usado como um operador infix em Scala. Aqui está a definição da classe MyBool
que inclui os métodos add
e or
:
case class MyBool(x: Boolean) {
def and(that: MyBool): MyBool = if (x) that else this
def or(that: MyBool): MyBool = if (x) this else that
def negate: MyBool = MyBool(!x)
}
Agora é possível utilizar as funções and
and or
como operadores infix:
def not(x: MyBool) = x.negate
def xor(x: MyBool, y: MyBool) = (x or y) and not(x and y)
Isso ajuda a tornar a definição de xor
mais legível.
Aqui está o código correspondente em uma sintaxe de linguagem de programação orientada a objetos mais tradicional:
def not(x: MyBool) = x.negate
def xor(x: MyBool, y: MyBool) = x.or(y).and(x.and(y).negate)