【问题标题】:(Macro-based?) workaround for "applyDynamic does not support passing a vararg parameter" in Scala(基于宏?)Scala中“applyDynamic不支持传递可变参数”的解决方法
【发布时间】:2016-09-29 04:44:44
【问题描述】:

我正在使用a library,它大量使用宏和applyDynamic。 The compiler bug 阻止将 varargs 与 applyDynamic 一起使用给我带来了很多痛苦,我希望找到一种解决方法,允许我将动态参数序列传递到 applyDynamic 然后调用宏。

在调用 applyDynamic with little success 之前,我尝试编写一个扩展序列或 splat 的宏,但我对 Scala 宏不太满意,所以我可能做错了什么。

【问题讨论】:

    标签: scala macros scala-macros


    【解决方案1】:

    我在这一行使用 ScalaJS 时遇到了这个问题:

    literal(seq: _*)
    

    解决方法很简单:

    literal.applyDynamic("apply")(seq: _*)
    

    解释:literal(更准确地说:scala.scalajs.js.Dynamic.literal)是一个扩展 scala.Dynamic 的对象,并且调用 literal(...) 被取消为 literal.apply(...),它本身应该由编译器转换(如果没有错误)为 literal.applyDynamic("apply")(...)。嗯,有点难看,不过糖总是可以自己去掉的。

    【讨论】:

      【解决方案2】:

      自 Scala 2.12.5 以来,此问题一直是 fixed

      【讨论】:

        猜你喜欢
        • 2018-10-22
        • 1970-01-01
        • 1970-01-01
        • 2013-05-15
        • 1970-01-01
        • 1970-01-01
        • 2022-09-27
        • 2020-10-02
        • 1970-01-01
        相关资源
        最近更新 更多