首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Anorm解析浮点值

Anorm解析浮点值
EN

Stack Overflow用户
提问于 2012-06-25 03:12:07
回答 1查看 2.7K关注 0票数 12

在Play Framework2.0中,我尝试使用行解析器从PostgreSQL加载一个实数(即单精度浮点)类型的列,如下所示:

代码语言:javascript
复制
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]

当使用双精度类型时,一切工作正常。有没有可能在Anorm中使用单精度浮点数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-25 15:02:53

您始终可以在现有列解析器的基础上创建自己的列解析器:

代码语言:javascript
复制
 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驱动程序返回的值类型相匹配,这可能是不正确的(取决于列定义)。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11180429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档