有没有办法避免在scala slick查询中使用._1?

时间:2015-07-29 11:55:18

标签: scala slick-2.0

我在scala中有以下查询:

val query = for {
      (table1, table2) <- Customer leftJoin Transaction on (_.custID === _.custID) 
      if table1.name === "ABCD"          
    } yield (table1.name, table2.date)

当我使用query时,我必须分别对query._1query._2使用namedate。是一种使用此类内容的方式:query.namequery.date

2 个答案:

答案 0 :(得分:5)

你的表达式返回一个元组,并且可以使用模式匹配轻松解构元组(这里没有特定的Slick特性):

if($proizvodjac != null) { // "null" is a string, which is not null
    $query .= " WHERE v.proizvodjac=\"$proizvodjac\""; // add a space in your string and use .= to concatenate
}

您应该能够对Slick查询返回的元组执行相同的操作:

val (foo, bar) = ("foo", "bar") // foo="foo", bar="bar"

答案 1 :(得分:0)

您可以针对该问题使用模式匹配

val (name, date) = for {...}

所以当左侧与右侧匹配时,变量将获得值

元组示例:

val (a,b) = (1,2)
scala> val (a,b) = (1,2)
a: Int = 1
b: Int = 2