0

谁能告诉我为什么在这种情况下:

Query(Users) foreach {case (userId, userName) =>       
    println(userId + ", " + userName) }

Scala 识别 userId,但在这种情况下:

val l = List[(Int, String)]()

Query(Users) foreach {
   case (userId, userName) =>
     l::(foo(List[(userId, userName)])) 
}

不是吗?(如,“=>”右侧的 userId 在第二种情况下被识别,但不是第一种)

用户是一个光滑安装的数据库,如下所示:

object Users extends Table[(Int, String)]("Users") {

  def userId          = column[Int]("UserId", O.PrimaryKey, O.AutoInc)
  def userName        = column[String]("UserName")

  def * = userId ~ userName
}
4

1 回答 1

1

我想你的意思是:

l::(foo(List((userId, userName))))

当您将内容放在方括号之间时,您正在尝试键入列表,我假设您实际上想要将TupleofuserId和添加userName到列表中。

如果您只想将其放入其中List并且不需要该Tuple提取器,则也可以这样编写:

Query(Users) foreach { tup =>     
  l::(foo(List(tup))) 
}
于 2013-07-12T23:12:55.463 回答