【发布时间】:2014-10-09 03:46:32
【问题描述】:
我正在使用 Scala、Anorm 和 Play2 框架从 SQL 表中检索数据。在很多地方我都有这样的代码:
val emailViewRecordParser: RowParser[EmailViewRecord] = {
str( "sfname" ) ~
str( "slname" ) ~
str( "practice_name" ) ~
str( "email" ) ~
str( "phone_area_code" ) map {
case
subscriberFirstName ~
subscriberLastName ~
practiceName ~
subscriberEmail ~
phoneAreaCode
deviceAddress =>
EmailViewRecord(
subscriberFirstName,
subscriberLastName,
practiceName,
subscriberEmail,
phoneAreaCode
)
}
}
这很难管理,因为很容易弄乱参数顺序/长度。理想情况下,我们可以编写如下内容:
val emailViewRecordParser: RowParser[EmailViewRecord] = {
EmailViewRecord(
str( "sfname" ) map { subscriberFirstName } subscriberFirstName,
str( "slname" ) map { subscriberLastName } subscriberLastName,
str( "practice_name" ) map { practiceName } practiceName,
str( "email" ) map { subscriberEmail } subscriberEmail,
str( "phone_area_code" ) map { phoneAreaCode } phoneAreaCode
)
}
按照这些思路实现布局的好方法是什么?另外,开头的'str'函数可以是int、date等,所以第一个函数需要针对每一行
【问题讨论】: