operadores ejemplos asignacion scala slick

scala - ejemplos - operadores de asignacion en javascript



¿Qué hace el operador<> en Slick? (3)

Estaba recorriendo la documentación de Slick para configurar un prototipo de trabajo rápido. Estaba pasando por este enlace .

En la sección Tablas asignadas, veo un operador <> en el ejemplo mencionado, pero no puedo encontrar ninguna documentación para eso en ninguna parte. Necesita ayuda para entender esto.


El operador <> define una relación entre una Row en la Table y una case class .

case class User(id: Option[Int], first: String, last: String) ROW |id | first | last |

Así que los datos primero se toman de las Tablas como una n-tuple (lado izquierdo de <> ) y luego se transforman en la case class (lado derecho de <> ).

Para hacer que la transformación de la clase de caso funcione, se necesitan dos tipos de métodos:

Row a n-tuple a case class .

scala> User.tupled res6: ((Option[Int], String, String)) => User = <function1>

Así que esta función puede crear un User cuando se le da un triple (Option[Int], String, String) como argumento.

case class a n-tuple para ser escrito en DB.

scala> User.unapply _ res7: User => Option[(Option[Int], String, String)] = <function1>

Esta función proporciona la funcionalidad al revés. Dado un usuario puede extraer un triple. Este patrón se llama un Extractor . Aquí puede aprender más sobre esto: http://www.scala-lang.org/old/node/112


No es un operador de ShapedValue , es un método definido por la clase ShapedValue de ShapedValue

Como puede ver en la documentación que vinculó, se usa para mapear una proyección hacia y desde una clase de caso que proporciona dos métodos

def * = (id.?, first, last) <> (User.tupled, User.unapply)