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

use*_*466 0 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)
Run Code Online (Sandbox Code Playgroud)

当我使用query我必须使用query._1query._2用于namedate分别.是一个使用这种东西的方法:query.name,query.date

Cyä*_*gha 5

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

val (foo, bar) = ("foo", "bar") // foo="foo", bar="bar"
Run Code Online (Sandbox Code Playgroud)

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

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

  • 这是有道理的,但是,你使用`query._1`或`query._2`的例子也不行?话虽如此,在元组列表中,你可以使用类似`myList map {case(name,date)=>/*do somehting*/}`; 或者,在你的表达中,你可以产生一个案例类,而不是产生一个元组.一旦我有更多的时间,我会立即编辑我的答案. (3认同)