Después de haber escrito algunas herramientas de scala, estoy tratando de comprender la mejor forma de organizar mi código, particularmente las implicaciones. Tengo 2 objetivos:¿Cómo debo organizar implicits en mi aplicación Scala?
- A veces, quiero ser capaz de importar solo las implicidades que pido.
- Othertimes, quiero importar todo.
Para evitar la duplicación de los implícitos, se me ha ocurrido con esta estructura (similar a la forma en que está dispuesto scalaz):
case class StringW(s : String) {
def contrived = s + "?"
}
trait StringWImplicits {
implicit def To(s : String) = StringW(s)
implicit def From(sw : StringW) = sw.s
}
object StringW extends StringWImplicits
// Elsewhere on Monkey Island
object World extends StringWImplicits with ListWImplicits with MoreImplicits
Esto me permite simplemente
import StringW._ // Selective import
o (en la mayoría de los casos)
import World._. // Import everything
¿Cómo funciona? todos los demás lo hacen?
¿Qué es 'implicit' sobre algo de esto? –
Supongo que se suponía que todas las definiciones 'def' estaban implícitas. –
Solucionado ahora, gracias! –