问题标签 [scala-3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
164 浏览

scala - Scala3 宏调用 TypeTree 的类型类实例(无类型 arg)

给这样Show的类型类,我想为案例类生成展示,比如

但是该showInstance部分不会编译,那么如何在Show[X]这里调用一个隐式?

0 投票
2 回答
67 浏览

scala - 具有协方差的交集类型

考虑以下内容:

当我们重写childreninCC时,被重写的方法是顶级方法的合并实体。因此返回类型List[AA] & List[BB]是有意义的。

我不明白的是,下面是如何编译的?

List 是协变的,因此(这里是proof的来源):

DD如果也 只能编译List[AA] & List[BB] <: List[AA & BB]。这是真的吗?如果是这样,那么不是List[AA] & List[BB] =:= List[AA & BB]。请建议


在我看来List[AA & BB] =:= List[AA] & List[BB]。考虑一下:

0 投票
1 回答
234 浏览

scala - scala 3宏如何实现通用特征

我想实现proxy一些特征A(例如,将方法调用委托给一些 rpc 调用),就像这样

但是编译器抱怨

0 投票
1 回答
131 浏览

scala - Scala 3 类型绑定 `<:<` 元组技巧

在在线会话中,Adam Warski 展示了一个技巧来证明元组具有一定的结构:

第一个实现是

这允许(但不应该)

并有技巧地实施

有人可以解释一下如何

有效,为什么T是 的子类型Map

0 投票
1 回答
45 浏览

scala - 指定较弱的 Aux 类型绑定不会导致编译错误

这是一个例子:

该示例为Scala 2Scala 3编译,但似乎没有意义。为什么会编译?

0 投票
1 回答
111 浏览

scala - 在 Scala 3 中打印 MirroredElemTypes

我正在尝试修改标准示例以打印具有类型的值。我被困住了p.MirroredElemTypes。我还没有找到任何 API 来遍历和字符串化类型。

0 投票
1 回答
61 浏览

scala - 是否可以在 Scala 3 中使用类似于打字稿映射类型的另一种类型来包装成员类型?

在打字稿中它看起来像这样

我想拥有

是否有可能在 Scala 3 中实现这样的目标?

0 投票
1 回答
281 浏览

scala - scala 3 宏:从宏返回 Map[String, Class[Any]]

我正在尝试针对 scala 3.0.0-M3 编写一个宏。我希望宏返回类型的 Option[_] 字段的内部类型。例如,给定:

我想将 id 与 Int 相关联,并将 bossId 与 Long 相关联。

我有一些代码可以为原始类型执行此操作并且编译正常:

但是如果我尝试使用它,就像这样:

编译器首先打印Map(id -> int, bossId -> long),因为宏代码中的 println 看起来不错,但随后失败:

我做错了什么?我不应该能够从宏返回地图,或者不是这样吗?

请注意,我的宏中的 if/else 逻辑并不重要,问题可以简化为(其他一切都相同):

0 投票
1 回答
131 浏览

scala - Scala 3 美味的反射宏:CyclicReference

我正在尝试访问作为宏实现的方法的参数。

呼叫站点可能类似于:

现在,CyclicReference当宏展开时,我在defSym.tree. 我知道这defSym.tree是循环的,因为它包含当前扩展宏的代码,但我仍然需要访问方法定义的“树”版本来访问其名称和参数,而不需要方法的主体。我怎样才能在不骑自行车的情况下获得这些信息?

0 投票
1 回答
294 浏览

scala - 在 Scala 3.0 中访问注释值

我在 scala 中创建了注释并按如下方式使用它:

getAnnotations由于它是一个 Scala 注释,另一方面它无法读取scala-reflect,scala 3.0 不再提供依赖项,因此我们无法访问runtimeMirror

是否有任何替代解决方案来读取 scala 中的注释值?