Import no scala
Há algum tempo eu havia escrito umas anotações sobre o scala, vou colocando aos poucos por aqui (precisam de uns retoques), já deixando claro que não sou especialista no tema, apenas precisei para projetos pontuais e deixei registrado com a minha visão simplista.
Scala é uma linguagem que se encaixa tanto no paradigma Orientado a Objeto (OO) quanto no Funcional. Você verá fortes semelhanças com o Java, mas ela apresenta algumas características mais práticas e simples que sua quase irmã.
Como em outras linguagem, é possível importar pacotes, aqui com algumas facilidades e é o que discutiremos neste artigo. Diferente do Java, o scala permite fazer o import em qualquer parte do seu código.
O “wildcard”, porém, não é o tradicional asterisco “*”. O scala utiliza o “underscore” “_” em seu lugar.
scala> import org.apache.spark.sql.functions._ import org.apache.spark.sql.functions._
Se ao contrário, você desejar importar apenas dois componentes de um mesmo pacote, é possível usar chaves {}.
scala> import org.apache.spark.sql.functions.{greatest, sum} import org.apache.spark.sql.functions.{greatest, sum}
Uma outra coisa legal é a possibilidade de utilizar um alias para os imports:
scala> import scala.collection.mutable.{Map => MutableMap} import scala.collection.mutable.{Map=>MutableMap}
scala> val myMutMap = MutableMap("SP" -> "São Paulo") myMutMap: scala.collection.mutable.Map[String,String] = Map(SP -> São Paulo)
E por fim, se desejar excluir algo do pacote a ser importado, também é possível.
Imagine que você precise importar toda a “scala.collection.mutable” e em algum trecho você tenha um tipo LongMap (ou algum outro problema de compatibilidade) e não deseja importá-lo. Um exemplo importando toda a mutable:
scala> import scala.collection.mutable._ import scala.collection.mutable._ scala> LongMap(1.toLong -> "UM") res0: scala.collection.mutable.LongMap[String] = Map(1 -> UM)
E agora excluindo o LongMap:
scala> import scala.collection.mutable.{LongMap =>_, _} import scala.collection.mutable.{LongMap=>_, _} scala> LongMap(1.toLong -> "UM") <console>:15: error: not found: value LongMap LongMap(1.toLong -> "UM") ^
No próximo artigo a respeito, vamos falar um pouco de funções anônimas. Até lá!
Abraços,
Adriano Bonacin