Ant*_*ony 0 scala immutability pattern-matching
我有一个方法,需要以一年(int)作为参数。根据传入的年份,我需要分配一个变量,然后在查询中使用该变量:
def findByYear (year: Int): Future[Int] = {
val tableName = ""
year match {
case 1970 => tableName = "table1970" //this errors out
case 1980 => tableName = "table1980" //this errors out
}
config.db.run {
sqlu"SELECT count(*) from #${tableName}"
}
}
Run Code Online (Sandbox Code Playgroud)
由于scala不允许重新分配,因此出现了以上错误。有没有更好的方法来执行此操作,而不是将config.db.run子句放在每个子句中,case后者将成为非常重复的代码?
模式匹配表达式的计算结果为一个值,因此可以将其分配给val任何其他表达式,例如
def findByYear (year: Int): Future[Int] = {
val tableName = year match {
case 1970 => "table1970"
case 1980 => "table1980"
}
config.db.run {
sqlu"SELECT count(*) from #${tableName}"
}
}
Run Code Online (Sandbox Code Playgroud)
即使语句实际上是Scala中的表达式,所以我们也可以将它们分配给vals:
val x = if (true) "on" else "off"
x // x: String = on
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |