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?

Foi útil?

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
scroll top