问题标签 [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 投票
0 回答
64 浏览

scala - 无法序列化以 Sealed Trait 作为键类型的地图

我似乎无法指定这种类型的格式:

用于密封特征和子类型的序列化以及 Foo 类型的通常播放 JSON 格式。

但我得到了这个问题:

我认为 play-json-derived-codecs lib 会为 Baz 类型提供格式,这就足够了。如果 Foo 更改为

一切都很好。

0 投票
1 回答
73 浏览

scala - Cats 使用 Seq 自动派生

我想为某些类型定义相等性,这些类型可以是使用猫/小猫的其他对象或集合的一部分。我不想为每个其他类定义相等性。例如:

然后一个测试定义为

这工作正常,但如果我尝试添加以下测试用例

我明白了

自动派生的 eq 如何与Option但不一起工作Seq,我怎样才能使它工作?我试图添加import cats.instances.seq._,但这也不起作用。

0 投票
0 回答
39 浏览

scala - Scala 类型类,用于从派生或现有隐式值提供实例

我开始使用 Scala 中的通用编程,我正在尝试设计一种灵活的可构建模式类型(ADT 的通用描述),它可以转换为第三方序列化(例如,circe、upickle)或模式(例如,tap ) 类型类实例。在为产品和副产品构建模式时,它必须能够解析子组件的模式。

我想实现这一点的方法是使用Provider类型类,它将通过解析 aDeriver或解析现有的隐式实例来“提供”给定类型的实例。通过使派生提供程序成为优先级较低的方法,它应该更喜欢实例而不是派生。

下面是我的解决方案的一个版本,它应用于一个更简单的案例:生成一个NamesFor[T]包含提取的 T 类型字段名称的实例。

我可以通过以下两种方式派生实例:

1:现有NamesFor[T]实例的隐式提供者

NamesFor[T]2: from的隐式派生者T

但是当我尝试解析范围内NamesFor[T]没有隐式NamesFor[T]实例的提供者时,它失败了。也就是说,它无法通过以下方式解析实例provideDerivation

关于如何使这一切正常工作的任何想法?

0 投票
1 回答
52 浏览

scala - Scala 3方法使用镜像时太大

当我使用 Scala 3 的 Mirror 生成类型类列表时,会发生异常。我知道这是 jvm 方法大小的硬性限制,但我该如何规避这个问题。

ps:当删除 Data 类的某些字段时它可以工作,但是还有其他解决方案吗?

信息

sbt:1.6.0

斯卡拉:3.1.0

错误

scala.tools.asm.MethodTooLargeException:方法太大:parse/Main$。()V 编译时

堆栈跟踪

代码