【发布时间】:2014-04-22 10:47:13
【问题描述】:
好消息,Scala 2.11.0 版本已经发布。他们最终修复了案例类的数量限制http://www.scala-lang.org/news/2014/04/21/release-notes-2.11.0.html
我的问题与 slick orm 有关。我们还需要使用 HList 来克服数量限制吗?
【问题讨论】:
好消息,Scala 2.11.0 版本已经发布。他们最终修复了案例类的数量限制http://www.scala-lang.org/news/2014/04/21/release-notes-2.11.0.html
我的问题与 slick orm 有关。我们还需要使用 HList 来克服数量限制吗?
【问题讨论】:
目前还没有适用于 Scala 2.11.0 的生产就绪 Slick 版本。只有里程碑 Slick 版本 2.1.0-M1 可以在新的 Scala 上编译。
Slick Table 类需要 tupled 和 unapply 方法来编译。 arity > 22 的案例类中不存在这些方法
所以截至 2014 年 4 月 22 日,我们仍然必须使用 HList 来克服数量限制
感谢@Régis Jean-Gilles 帮助我解开迷茫
【讨论】:
apply 和unapply 的部分不正确。 arity > 22 do 的案例类有一个 apply 方法,但鉴于函数仍然限制为最多 22 个,您不能将 apply 提升为函数(没有 eta-扩展可能)。只要你直接调用apply(就像MyClass(1,2,3,...)一样,你很好。虽然没有unapply方法,模式匹配仍然有效:模式匹配器知道如何自己匹配一个案例类,它确实不需要调用unapply 方法。
apply 并进行模式匹配这一事实难道不会使“同样应用方法将函数限制为 22 个参数”这句话完全无关紧要吗?还是 Slick 需要更多(例如,它是否需要对 apply 执行 eta 扩展)?