gpt4 book ai didi

Scala 波浪号的含义

转载 作者:行者123 更新时间:2023-12-05 01:04:14 26 4
gpt4 key购买 nike

嗨,我是 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
}

线是什么意思:
def * = id.? ~ firstName ~ lastName ~ birthday.? <>(Customer, Customer.unapply _)

如何解释波浪号和问号?

最佳答案

您正在查看 Slick Table 定义,它遵循 Slick 1.0+ 版本定义 Table 的默认投影。使用名为 * 的方法. ~ s 加入 Column s 构成以一种投影构建器模式返回的默认 View 。 ? s 指示哪些字段表示 Customer 类中的选项值和 <>Projection 中的方法名特征。你可以想到<>用于在此处为客户取出元素或将元素放入数据库中。如果您有一些不能很好地映射的东西,例如,如果该表没有隐式 dateTypeMapper,则 <>函数是您手动调整传入和传出 Customer 案例类以进行日期转换的值的地方。

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

这是 1.0.1 Lifted Embedded 的链接文档。

关于Scala 波浪号的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23521569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com