【问题标题】:With new Scala 2.11.0 do we still have to use Slick HList to overcome arity limit?有了新的 Scala 2.11.0,我们还需要使用 Slick HList 来克服数量限制吗?
【发布时间】: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 slick-2.0


    【解决方案1】:

    目前还没有适用于 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 帮助我解开迷茫

    【讨论】:

    • applyunapply 的部分不正确。 arity > 22 do 的案例类有一个 apply 方法,但鉴于函数仍然限制为最多 22 个,您不能将 apply 提升为函数(没有 eta-扩展可能)。只要你直接调用apply(就像MyClass(1,2,3,...)一样,你很好。虽然没有unapply方法,模式匹配仍然有效:模式匹配器知道如何自己匹配一个案例类,它确实不需要调用unapply 方法。
    • 是的,你是完全正确的应用。谢谢@RégisJean-Gilles
    • 没问题。我看到你已经编辑了你的答案。但是,您 可以 调用 apply 并进行模式匹配这一事实难道不会使“同样应用方法将函数限制为 22 个参数”这句话完全无关紧要吗?还是 Slick 需要更多(例如,它是否需要对 apply 执行 eta 扩展)?
    • 是的,你是对的。我把自己弄糊涂了。 Slick 需要元组 && unapply 方法才能工作。 arity > 22 的案例类中不存在这些方法
    • 感谢您解决这个问题。有没有未来的前景?这是阻碍我将应用程序从 JPA 移植到 Slick 的主要问题。我们可以/应该期望这个问题在(不那么遥远的)未来得到妥善解决吗?
    猜你喜欢
    • 2013-12-31
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多