Codemountain, Paulo Suzart's Blog

Sem Elvis Operator? Crie um!

with 6 comments

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.

Written by paulosuzart

outubro 22, 2009 às 7:57 pm

Publicado em scala

Tagged with

6 Respostas

Subscribe to comments with RSS.

  1. […] do CodeMountain fez um post sobre o Elvis Operator em Scala. A gente sabe que não existe, mas ele criou um. Vale a pena conferir. […]

  2. Show de bola, isso me lembra os tempos de C++ que permite a sobrecarga de operadores😀. Scala é uma linguagem muito boa, penso q logo logo sera uma linguagem de peso no mundo dos negócios.

    Abraao

    outubro 22, 2009 at 8:27 pm

  3. Social comments and analytics for this post…

    This post was mentioned on Twitter by lucastex: O Elvis Operator em #Groovy (http://is.gd/4wl0m) e em #Scala (http://is.gd/4wjz3) Comentem!…

    uberVU - social comments

    outubro 23, 2009 at 2:37 am

  4. Legal isso, eu to querendo um tempo para estudar paradigma funcional com Scala.

    Felipe Cypriano

    outubro 23, 2009 at 4:06 pm

    • Ótimo! Espero que as entradas no Blog possam ajudar de alguma forma. Postarei mais sobre Scala e FP em breve.
      Obrigado por visitar.

      paulosuzart

      outubro 23, 2009 at 4:09 pm

  5. Estou atualmente estudando Scala pois gostei da abordagem e da forma como a linguagem produz rapidos resultados.
    Seus Post são bem colocados, obrigado pelos esclarecimentos !!!

    Na Comunidade Java Livros tem links em Java Noticia onde vc também encontra referencia sobre Scala.

    Abraçossss !!!!

    Marcio Duran

    janeiro 14, 2010 at 3:36 pm


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: