问题标签 [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.
scala - 如何在 Scala 中使用没有参数的构造函数参数创建案例类的实例?
我正在制作一个通过反射字段值设置的 Scala 应用程序。这工作正常。
但是,为了设置字段值,我需要一个创建的实例。如果我有一个带有空构造函数的类,我可以使用 classOf[Person].getConstructors.... 轻松完成此操作。
但是,当我尝试使用具有非空构造函数的 Case 类执行此操作时,它不起作用。我拥有所有字段名称及其值,以及我需要创建的 Object 类型。我可以用我所拥有的东西以某种方式实例化案例类吗?
我唯一没有的是 Case Class 构造函数中的参数名称,或者是在没有参数的情况下创建它然后通过反射设置值的方法。
让我们来看这个例子。
我有以下
scala - 关于 scala 构造函数超载的后续行动
这是Scala 构造函数重载的后续问题?我想要一个案例类构造函数,它在输入的受限形式上运行,因此覆盖,而不是重载构造函数:
这不编译;我已经尝试了几个不同的迭代,但它们都回到编译器告诉我它需要'this',但是找到了'if'。如何获得我想要的行为?
scala - 未找到 Playframework、scala 案例类和属性
当我在 scala 中运行 playframework 时,我的行为非常奇怪。我使用 anorm 作为数据库访问层,因此我开始编写一些代码,我看到了非常奇怪的 scala 编译器行为。
这是有效的代码:
和:
目前没有编译错误。工作正常。但是当我更改属性名称时出现错误:
由于我是 Scala 的新手,我认为_
这是一些神奇的关键字或其他神奇的东西。
所以我将属性名称更改为aBB_AccAd
但没有编译错误。
哎呀...
下一个有趣的事情:我将其重命名为AAbbdddsadasdasAAFFFFeeee
,我再次看到编译错误。那么是什么促使 Scala 为某些字面量抛出编译错误呢?
这是错误还是功能?:-)
scala - 合并两个相同类型的案例类,除了一些字段
如果您有一个案例类,例如:
您有两个实例,例如:
是否可以将实例 1 合并到实例 2 中,字段 z 除外,这样结果将是:
我的用例只是我通过 Scala API 将 JSON 对象提供给 Backbone 应用程序,而 Backbone 应用程序返回给我一个相同结构的 JSON,以便我可以保存/更新它。这些 JSON 对象被解析为案例类,以便于 Scala 操作。但是客户端永远不应该更新某些字段(例如creationDate)。现在我正在进行手动合并,但我想要一个更通用的解决方案,有点像增强的复制功能。
我想要的是这样的:
但我希望它是类型安全的:)
编辑: 我的案例类有更多字段,除非我明确表示不合并字段,否则我希望默认行为合并字段。
scala - 来自 Map 的案例类
我正在尝试实现从 Scala 案例类到 Maps(field_name -> field_value)的(反)序列化。问题是我不知道如何创建一个函数,它需要一个案例类类型和一个映射,实例化、填充并返回它。我已经在一些 JSON 库中看到了这一点,但我没有得到代码。
scala - case 类中的 var 成员会影响 case 类的相等性吗?
我在我的代码中大量使用案例类,回复案例类的基本相等定义以正确运行。然后现在我发现我需要将另一个字段成员添加到案例类中。
- 那么如果我
var
在案例类中添加一个字段成员,它会弄乱案例类的相等属性吗? - 如果 1 是,那么如果我只更改
var
一次字段值,之后,不会发生任何重新分配,在 case 类进入任何集合或进行相等比较之前,这仍然会弄乱相等行为吗?
scala - 例外应该是案例类吗?
我的自定义异常类型应该是case class
es 吗?
从好的方面来说,我得到了提取器。
不利的一面是,我得到了不正确的相等语义。但我可以通过覆盖来避免这种情况equals
。
那么,在概念层面上,将它们变成case class
es 有意义吗?
scala - “免费”获取案例类的部分构造函数
考虑一个定义两个属性的抽象类
这是各种案例类的基类,例如
目标:我最终希望能够以两种方式创建上述案例类的实例,即
方法:因此定义一个帮助类来定义has
并允许我部分构造A
s似乎是合理的
问题:当前的机器不允许像Bar(1)
这样的调用,因为这实际上是对 的调用Bar.apply(1)
,即apply
由编译器生成的对象定义的方法的调用Bar
。
如果我可以强制编译器将Bar
对象object Bar extends PartialAConstructor
生成为
但是,似乎不可能影响案例类的伴随对象的生成。
所需属性:
案例类:
Foo
等Bar
应该保留案例类,因为我想使用编译器生成的好东西,例如结构相等copy
和自动生成的提取器。“完全”结构平等:将案例类定义为
不是一个选项,因为编译器生成的
/li>equals
方法只考虑第一个参数列表,因此以下内容将错误地成立:尽可能少的代码重复:例如,当然可以定义一个
但是对于扩展的每个案例类都必须这样做
A
,即 isFoo
等Bar
。
scala - 从参数集合构造案例类
鉴于:
我想要一些能神奇地创造的东西:
这样的东西是否存在(对于任意大小的东西)?
scala - 如何在继承树中模式匹配抽象父类
我是具有java背景的scala新手。
有没有办法在类继承树中模式匹配超类(或特征),叶子作为案例类和节点抽象类或特征?据我所知,案例类继承是不允许的。
我认为大型继承树中的模式匹配抽象类会非常有帮助
在以下代码中,匹配语句中的最后一种情况在编译期间出错