gpt4 book ai didi

scala - 这怎么是 "type mismatch"?

转载 作者:行者123 更新时间:2023-12-02 03:57:36 28 4
gpt4 key购买 nike

found   : (Int, String, Option[java.lang.String])
required: (Int, String, Option[java.lang.String])

相关代码:

object M extends Table[(Int, String, Option[String])]("table") {

def msaid = column[Int]("msaid", O NotNull)
def name = column[String]("name", O DBType "varchar(255)")
def shape = column[Option[String]]("shape")
def * = msaid ~ name ~ shape

type T = (Int, String, Option[java.lang.String])

def apply(msa: T) = 1

def q() = db withSession { s: Session => (for (r <- M) yield M(*)).list()(s) }
^
^
...

我也尝试过

  type T = (Int, String, Option[String])

最终目标是我希望将所有选定的列转换为具有命名访问器的对象,而不是元组。

Scala version 2.9.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_07).

更新:

这是一个Gist问题的解决方案(对上面的代码进行了稍微简化,并通过仅使用 Int 消除了任何 String/java.lang.String“混淆”。)

最佳答案

错误消息并没有告诉您哪个是 TupleN,尽管我认为这在某些时候得到了改进。不匹配发生在元组和 n 个参数之间。或者不是。

fix位于 2.9.2 中。我注意到你的 .sbt 使用 2.9.1 scalaquery,以防万一。 scala-tools.org 不是已经过时了吗?抱歉帮了一半的忙。

作为一个非用户来说,看起来 Projection2 不是您寻找的元组,尽管它是一个产品:

class Projection2 [T1, T2] extends (Column[T1], Column[T2]) with Projection[(T1, T2)] 

回复:

scala> M.column[Int]("id") ~ M.column[Int]("n")
res1: (Int, Int) = Projection2

scala> M(res1)
<console>:23: error: type mismatch;
found : (Int, Int)
required: (Int, Int)
M(res1)
^

scala> M.apply
def apply(v: (Int, Int)): Int

scala> M.apply((1,2))
res3: Int = 1

关于scala - 这怎么是 "type mismatch"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13885423/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com