Scala – Anonymous Functions
Olá Pessoal.
Depois de um tempinho, vamos falar de Anonymous Functions. Aí está uma das coisas que a gente acaba vendo bastante no mundo scala. Vemos tanto que acabamos nos acostumando e usando sem perceber.
As funções anônimas surgem quando você deseja algo que, por simplicidade, não deseja tê-la explicitamente declarada.
Pode ser algo como um procedimento para pegar o DDD (dois primeiros dígitos) de uma lista de telefones.
scala> val myPhones = List("11990707070","15999707070","44999707070","21999707070") myPhones: List[String] = List(11990707070, 15999707070, 44999707070, 21999707070)
scala> myPhones.map(phone => phone.substring(0,2)) res3: List[String] = List(11, 15, 44, 21)
O trecho “(phone => phone.substring(0,2))” é uma função anônima que para cada phone, aplica a função substring sobre ele.
Para entender melhor o que se passa, veja que este trecho é reconhecido como uma função que recebe e retorna um String.
scala> (phone: String) => phone.substring(0,2) res5: String => String = <function1>
É possível chamar a função anônima através do valor do resultado da linha anterior: “res5”
scala> res5("11999707070") res6: String = 11
Outra coisa interessante no scala, é que é possível atribuir uma função anônima para uma variável (ou valor). E com a função atribuída, basta chamar a variável passando o parâmetro.
scala> val phoneFnc = (phone: String) => phone.substring(0,2) phoneFnc: String => String = <function1> scala> phoneFnc("11999707070") res0: String = 11
Agora só falta você testar.
Até a próxima.