Scala意为代字号

pma*_*cki 4 scala

嗨,我是新的Scala,并有以下示例的问题:

import scala.slick.driver.MySQLDriver.simple._

    case class Customer(id: Option[Long], firstName: String, lastName: String, birthday: Option[java.util.Date])

/**
 * Mapped customers table object.
 */
object Customers extends Table[Customer]("customers") {

  def id = column[Long]("id", O.PrimaryKey, O.AutoInc)

  def firstName = column[String]("first_name")

  def lastName = column[String]("last_name")

  def birthday = column[java.util.Date]("birthday", O.Nullable)

  def * = id.? ~ firstName ~ lastName ~ birthday.? <>(Customer, Customer.unapply _)

  implicit val dateTypeMapper = MappedTypeMapper.base[java.util.Date, java.sql.Date](
  {
    ud => new java.sql.Date(ud.getTime)
  }, {
    sd => new java.util.Date(sd.getTime)
  })

  val findById = for {
    id <- Parameters[Long]
    c <- this if c.id is id
  } yield c
}
Run Code Online (Sandbox Code Playgroud)

line的含义是什么:

def * = id.? ~ firstName ~ lastName ~ birthday.? <>(Customer, Customer.unapply _)
Run Code Online (Sandbox Code Playgroud)

如何解读波浪标志和问号?

n07*_*337 5

您正在查看Slick Table定义,该定义遵循Slick 1.0+版本,使用名为的方法定义Table的默认投影*.在~我们携手在 s到弥补一种投影生成器模式返回的默认视图.该?小号指示哪个字段代表在客户类选项值,并且<>是在一个方法的名称投影性状.您可以将此<>视为用于解决问题或将事物放入数据库中.如果您的某些内容映射不正确,例如,如果该表没有隐式dateTypeMapper,那么<>您可以在该函数中手动调整进入和退出Customer案例类以进行日期转换的值.

老实说,找出这些方法的来源在IDE中更容易,因为文档没有描述类的细节,并且Slick scaladocs中有很多类.

这是1.0.1 Lifted Embedded文档的链接.