Qual é a melhor maneira de usar enriquecer minha biblioteca no scala?
-
29-10-2019 - |
Pergunta
Existem duas maneiras diferentes de implementá-lo.
Um é mais curto
implicit def toR1(s:String) = new { def getLength = s.length)}
O segundo é mais longo
class R2(s:String){def getLength2 = s.length)}
implicit def toR2(s:String) = new R2(s)
Qual é o melhor?
Solução
A primeira versão usa um tipo estrutural.Torna possível escrever código curto e legível, mas uma desvantagem dos tipos estruturais é que a reflexão é usada em tempo de execução quando você chama o método no tipo estrutural.Chamar um método via reflexão é mais lento do que chamar um método diretamente.
Mais detalhes estão nesta postagem do blog (escrita por mim): Evite tipos estruturais ao lenocínio de bibliotecas
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow