Codemountain, Paulo Suzart's Blog

Sem Elvis Operator? Crie um!

com 6 comentários

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.

Escrito por paulosuzart

outubro 22, 2009 às 7:57 pm

Publicado em scala

Etiquetado com

6 Respostas

Assinar os comentários com 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 :D . Scala é uma linguagem muito boa, penso q logo logo sera uma linguagem de peso no mundo dos negócios.

    Abraao

    outubro 22, 2009 em 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 em 2:37 am

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

    Felipe Cypriano

    outubro 23, 2009 em 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 em 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 em 3:36 pm


Deixe uma resposta

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

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.