Sem Elvis Operator? Crie um!
Meu querido amigo @lucastex Postou sobre Elvis operator em Groovy. Ele também me perguntou se Scala tinha este operador. E eu disse: Não, mas eu posso criar agora. E assim fiz:
implicit def toRockStar[B](v : B) = new { def ?: (opt: => B) : B =
if (opt == null) v else opt}
Se voce observar bem neste Post, eu criei o operador % aplicável a Strings para facilitar a configuração de alguns parâmetros em uma conexão com o RabbitMQ.
Então, para usarmos nosso Rock Start Elvis operator fazemos assim:
scala> val name : String = null name: String = null scala> val l = name ?: "Lucas" l: java.lang.String = Lucas // resultado deve ser Lucas scala> val p = l ?: "Paulo" // Resultado Deve ser Lucas p: java.lang.String = Lucas
A variável imutável p só deve receber o valor Paulo se a variável l não tiver sido atribuído a uma String. O Elvis aqui serve para qualquer tipo, pois foi construído de forma genérica com tipos parametrizados (ver o [B]).
Em Scala os operadors aritiméticos também são funções e não operadores da linguagem. Logo, existe a possibilidade de criação de qualquer operador com o nível de complexidade necessário para resolver o seu problema.
Foi um post curto, e um bate bola com o Lucas. Tento usar o público dele e de outras linguagens para atrair a atenção para Scala, uma linguagem sem dúvida promissora.
Com Scala é assim, não espere a linguagem criar um operador interessante como esse, simplesmente o faça.
5 Comentários
Pular para o formulário de comentários | RSS de comentários [?] | trackback uri [?]