问题标签 [generic-derivation]

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 投票
2 回答
108 浏览

scala - Shapeless:这两种实例派生方法有什么区别?

有人可以解释一下这两种类型类实例派生方法之间的区别(特别是对于 Option[A])吗?

1.

我尝试了两者并且它们工作正常,但我不确定它们是否会在所有情况下产生相同的结果(也许我错过了一些东西)。

我们真的需要LowestPriority实例吗?如果我说第一种方法给了我们更多的灵活性,我是对的吗?

0 投票
1 回答
164 浏览

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

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

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

0 投票
1 回答
111 浏览

scala - 在 Scala 3 中打印 MirroredElemTypes

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

0 投票
1 回答
317 浏览

scala - 通过在 Scala 3 中展开类型将案例类转换为另一个案例类

我有一个表示容器和两个案例类的枚举:

我想在 Scala 3 中编写一个通用函数,将所有案例类转换为类似PersonTemplate的对应类Person,例如:

我尝试了几种方法,但都没有成功,主要是因为我不明白如何使用 Scala 3 Tuple,它在我看来与 Scala 2 Shapeless 不同HList(即使在无形中我也不是那么好)。

我的总体方法是:

  1. 在元组中转换案例类。为此我发现Tuple.fromProductTyped
  2. 将每个元素约束为Container[_]. 我发现Tuple.IsMappedBy保证元组具有正确的形状,Tuple.InverseMap并且似乎提取了容器内的类型。不过,我不确定将这段代码放在哪里。
  3. 将(poly?)函数应用于调用的每个值Container.get。由于我在网上发现的一点点,我最终使用了很多,.asInstanceOf这对我来说似乎不合适。
  4. 使用将结果转换Tuple为输出类型summon[Mirror.Of[O]].fromProduct(output)

为了完整起见,这是我尝试的最后一个代码,当然不起作用:

0 投票
1 回答
36 浏览

c++ - 具有内部类参数的 C++ 覆盖函数

我有一个抽象图(A在示例中)。它具有InnerA用于其中一项功能的内部类。我想B从这个类派生一个新类(例如)并制作一个包装器InnerA以添加一个应该在B.

但是我收到一个无法覆盖基本功能的错误functionB实现这一点的正确方法是什么?

0 投票
0 回答
71 浏览

scala - 类型类:不使用 `asInstanceOf`,但仍然得到 `ClassCastException`

考虑以下相对简单的代码:

运行它会导致以下异常:

但如果我删除case object C,那么一切都会好起来的。异常发生在m.fromProduct(p)。如果case object C存在,m.fromProduct(p)则返回此对象而不是 type 的实例C。知道为什么会这样吗?什么是最好的解决方法?

0 投票
0 回答
69 浏览

scala - 将 List[T] 缩小为具有 List[A <: T] 和 Option[B <: T] 元素的案例类

我有以下课程;

我将Part1和归类Part2为简单的部分和,Part3以及Part4“组合部分”,因为它们仅由其他部分或其他部分的某些效果组成。

我希望能够将分组的部件转换为部件列表,反之亦然。但我只想使用两种方法来做到这一点。一个用于分组部分到列表,一个用于列表到分组部分,因为我有数百个扩展类,Part我不想为所有这些类编写方法。

我设法将分组部分转换为列表如下;

它按预期工作

如何将零件列表转换为分组零件?(忽略从部件列表到分组部件的函数是部分的事实。)

Codewise 我要求实现类似的东西:

我会像这样使用它;

Scastie为工作部分。

0 投票
1 回答
11 浏览

grammar - 我怎样才能推导出这些语法

问题是我不知道如何推导数字..

我怎样才能在这里推导:00111 ∈ L(G)

在这里我必须给出推导三:0000121 ∈ L(G)

0 投票
1 回答
218 浏览

scala - 类型类派生访问默认值

在使用 Mirrors 在 Scala 3 中执行类型类派生时,是否有一种干净的方法来访问案例类字段的默认值?例如:

Mirror.Product.MirroredElemLabels将设置为("s", "i", "d")。有没有类似的东西:(Some["bar"], None, Some[3.141592653589793])

如果不能,这可以使用宏来实现吗?我可以同时使用镜像和宏来派生类型类实例吗?

0 投票
1 回答
68 浏览

scala - 是否可以让子特征继承另一个特征的类参数?

我正在尝试稍微干燥我的代码。我正在使用 Circe 进行一些解码。我有几个班级,所有班级都有以下形式:

我想停止用隐含的方式重复自己,所以我开始创造一个新的特征:

这样我就可以将我的课程缩短到:

这将非常方便。但是,我A is not a class在尝试编译时得到了。我认为我不能以我想要的方式做到这一点。

有没有一种聪明的方法可以做到这一点,所以在定义只在被解码的类中发生变化的隐式解码器时我不能重复自己?