问题标签 [case-class]

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 回答
13864 浏览

scala - 案例类继承有什么 *so* 错误?

在寻找其他东西时,完全出于巧合,我偶然发现了一些关于恶魔案例类继承如何的评论。有一个东西叫做ProductN,坏蛋和国王,精灵和巫师,以及一些非常理想的属性是如何随着案例类继承而丢失的。那么案例类继承有什么问题呢?

0 投票
3 回答
1842 浏览

scala - 使用 Scala 案例类建模

我正在尝试将来自 REST API 的响应建模为可以使用模式匹配的案例类。

我认为假设继承会很合适,但我发现这已被弃用。我知道已经存在与案例类和继承相关的问题,但我的问题更多是关于如何在没有继承的情况下在此处按照“正确方式”建模。

我从以下两个案例类开始,它们工作正常:

即 REST 调用将返回类似以下内容:

我可以像这样进行模式匹配:

等等,效果很好。

我遇到麻烦的地方是:我想要这些案例类的辅助扩展,例如:

这样我就可以像这样进行简化的模式匹配:

并且还允许我的 REST 代码直接使用和返回:

这更容易动态地建立响应。

所以...

我可以通过以下方式编译它(带有弃用警告):

但是,这似乎不适用于模式匹配。

关于这如何工作的任何想法?我对不同的方法持开放态度,但这是我为案例类寻找实际用途的尝试

0 投票
3 回答
10563 浏览

scala - 案例类中的重命名和覆盖等于方法

我想定义一个名为的特征Ext,它将现有equals方法重命名为equalsByAttributes并同时定义一个新equals方法。该特征用于扩展案例类。我目前的解决方案看起来有点hacky:

我想知道是否有一种直接引用A'sequals方法的方法,equalsByAttributes以便避免重新实现该方法?

编辑 2012-07-12

由于有一个引用超级实现的解决方案,super.METHOD_NAME我认为必须有类似的语法,例如overridden.METHOD_NAME访问将由特征扩展的基类/特征中的特定实现,因此我的Ext特征看起来像这样:

0 投票
3 回答
2920 浏览

scala - 在 ScalaTest 中断言案例类

我看到对 Option 类型的支持,但是自定义案例类呢?

我有点想这样做:

0 投票
2 回答
429 浏览

scala - 可遍历的递归节点结构

我正在尝试在节点结构上实现递归遍历:

调用toString类似的元素Atom("test").toString会导致堆栈溢出:

请注意,我没有在任何地方明确调用 foreach。那么为什么会出现堆栈溢出呢?

我通过一个额外的类和从toTraversableNode的隐式转换解决了这个特殊问题,但我仍然想知道是什么导致了堆栈溢出。谢谢。NodeTraversableNode

0 投票
1 回答
6609 浏览

scala - scala案例类命名参数

scala中是否有(或将在最近的功能中)可以创建带有命名参数的案例类?我的意思是使用构造函数中的命名参数来构造案例类对象。

我的案例课程有很多领域。具有大量未命名参数的构造函数很容易出错。

我想得到(目前不工作的例子):

作为解决方法,我们可以提供如下摘录所示的工厂方法,但这是一个丑陋的解决方案:

有什么线索吗?:)

编辑:这是旧版本的 intellij idea scala 插件中的错误。请不要再投票了;)

0 投票
4 回答
107880 浏览

scala - Scala案例类继承

我有一个基于 Squeryl 的应用程序。我将我的模型定义为案例类,主要是因为我发现拥有复制方法很方便。

我有两个严格相关的模型。字段是一样的,很多操作是通用的,要存放在同一个DB表中。但是有些行为只在两种情况中的一种情况下才有意义,或者在两种情况下都有意义但不同。

到目前为止,我只使用了一个案例类,带有一个区分模型类型的标志,并且所有基于模型类型而不同的方法都以 if 开头。这很烦人,而且不是很安全。

我想做的是考虑祖先案例类中的常见行为和字段,并让两个实际模型继承自它。但是,据我了解,从案例类继承在 Scala 中是不受欢迎的,如果子类本身就是一个案例类(不是我的案例),甚至是禁止的。

从案例类继承时我应该注意哪些问题和陷阱?在我的情况下这样做有意义吗?

0 投票
1 回答
607 浏览

scala - Scala 鸭子类型匹配

我有一个案例类,如下所示:

我想匹配:

有没有办法将这三个案例合并为一个案例(不向 A、B、C 添加中间父类)?我无法更改 A、B、C 或 Exp 的定义。某一些:

这显然不起作用,也没有:

0 投票
2 回答
1219 浏览

scala - Scala 中带有列表的递归类型

与 Scala 中的相互递归类型类似,我试图在 Scala 中创建一个相互递归类型。

我正在尝试制作一个用这种类型定义的图(它可以编译):

但我不明白如何用这种类型实际创建一些东西,因为为了用边 B 和 C 初始化节点 A,我至少需要对 B 和 C 有一个惰性引用,但我不能同时创建他们的边缘集。

是否可以实现这种递归类型?

编辑:

这是我目前用来将显式邻接列表转换为自引用列表的解决方案。

或者,来自一个边缘列表

感谢大家的建议!

0 投票
1 回答
1163 浏览

scala - 伴侣上的咖喱案例类构造函数

在定义案例类时,默认的伴随对象有很好的curried方法来获取案例类构造函数的柯里化版本:

但是,一旦我定义了一个明确的伴随对象,这个方法就会消失:

我可以像这样找回它:

但是,我想知道为什么在定义显式伴侣时它会消失(例如,与 相比apply)?

(斯卡拉 2.9.2)