gpt4 book ai didi

scala - Anorm 解析浮点值

转载 作者:行者123 更新时间:2023-12-04 00:58:56 24 4
gpt4 key购买 nike

在 Play 框架 2.0 中,我试图使用这样的行解析器从 PostgreSQL 加载一个真正的(即单精度浮点数)类型的列:

case class Foo(bar: Float)

object Foo {
def all = DB.withConnection { implicit c =>
SQL("SELECT * FROM foo").as(fooParser *)
}

val fooParser = {
get[Float]("bar") map {
case bar => Foo(bar)
}
}
}

这会产生一个错误: could not find implicit value for parameter extractor: anorm.Column[Float]
使用 double 类型时,一切正常。是否可以在 Anorm 中使用单精度浮点数?

最佳答案

您始终可以根据现有的列解析器创建自己的列解析器:

 implicit def rowToFloat: Column[Float] = Column.nonNull { (value, meta) =>
val MetaDataItem(qualified, nullable, clazz) = meta
value match {
case d: Float => Right(d)
case _ => Left(TypeDoesNotMatch("Cannot convert " + value + ":" + value.asInstanceOf[AnyRef].getClass + " to Float for column " + qualified))
}
}

但它匹配 JDBC 驱动程序返回的值类型,这可能不正确(取决于列定义)。

关于scala - Anorm 解析浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11180429/

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