duvida simples.

46 views
Skip to first unread message

Bruno Daniel Marinho

unread,
May 21, 2013, 2:25:03 PM5/21/13
to scala-...@googlegroups.com
Ola pessoal estou tentando entender o simbolo "_" em scala, ele parece um coringa mas não entendi o por que dado esse cenario.

var l = List("a","b" ,"c")

//Funciona "s" trabalha como a varivel.
  l.foreach( s =>
    if(s=="a"){
      print(s)
    }
  )

// Funciona _ assume o lugar de "s"
  l.foreach(
      print(_)
  )

Entao a duvida é se "_" é um coringa por que assim não funciona.

  l.foreach(
    if(_=="a"){
      print(_)
    }
  )

"_" deveria atuar como o S senao o por que?

Paulo Moreno

unread,
May 21, 2013, 3:31:33 PM5/21/13
to scala-...@googlegroups.com
Olá Bruno,

O motivo para isso é que o _ "saca" o parâmetro, portanto o segundo uso de "_" dentro da função seria para o segundo argumento que, no seu caso, não existe. No uso do reduce abaixo, esse comportamento fica claro:

  var l = List("a","b" ,"c")

  l reduceLeft ((r, e) => {r + e}) 

É equivalente:

  l reduceLeft (_ + _)

Nesse exemplo, o primeiro _ é equivalente ao "r" e o segundo _ ao "e". Se for necessário utilizar o argumento mais de uma vez, você terá que nomear os argumentos da função passada como parâmetro.

Espero ter ajudado. t+


2013/5/21 Bruno Daniel Marinho <bdms...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "scala-brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para scala-brasil...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 

Reply all
Reply to author
Forward
0 new messages