case-class相关内容

Scala - 如何打印像(漂亮打印)树这样的案例类

我正在使用 Scala 组合器制作解析器.太棒了.我最终得到的是一长串纠缠的 case 类,例如:ClassDecl(Complex,List(VarDecl(Real,float), VarDecl(Imag,float))),只是长了 100 倍.我想知道是否有一种好方法可以以树状方式打印这样的案例类,以便更容易阅读..?(或其他形式的Pretty Print) ClassDecl名称 = ..
发布时间:2021-07-15 19:24:55 其他开发

如何为 case 类创建一个显式伴随对象,它的行为与替换的编译器提供的隐式伴随对象相同?

我有一个这样定义的案例类: case class StreetSecondary(指示符:字符串,值:选项[字符串]) 然后我定义一个显式伴随对象: object StreetSecondary {//暂时为空} 定义显式伴生对象 StreetSecondary 的行为导致编译器生成的“隐式伴生对象"丢失;即替换为无法访问编译器生成的版本.例如,tupled 方法在案例类 StreetSe ..
发布时间:2021-07-15 19:22:11 其他开发

为什么 case 类伴随对象扩展 FunctionN?

当你创建一个 case 类时,编译器会创建一个相应的伴随对象,其中包含一些 case 类的优点:一个 apply 工厂方法匹配主构造函数,equals、hashCode 和 copy. 有点奇怪,这个生成的对象扩展了 FunctionN. scala>案例类 A(a: Int)定义类 A标度>A: (Int => A)res0: (Int) =>A= 只有在以下情况下才会出现这 ..
发布时间:2021-07-15 19:21:43 其他开发

在 Scala 中,是否有一种简单的方法可以将案例类转换为元组?

是否有一种简单的方法可以将 case 类转换为元组? 当然,我可以轻松编写样板代码来执行此操作,但我的意思是没有样板. 我真正想要的是一种轻松制作按字典顺序排序的案例类的方法.我可以通过导入 scala.math.Ordering.Implicits._ 来实现元组的目标,瞧,我的元组为它们定义了一个排序.但是 scala.math.Ordering 中的隐式通常不适用于案例类. ..
发布时间:2021-07-15 19:21:19 其他开发

声明 Scala 案例类有哪些缺点?

如果您编写的代码使用了许多漂亮的、不可变的数据结构,那么案例类似乎是天赐之物,只需一个关键字即可免费为您提供以下所有功能: 默认情况下一切都是不可变的 自动定义的吸气剂 体面的 toString() 实现 符合 equals() 和 hashCode() 带有用于匹配的 unapply() 方法的伴侣对象 但是将不可变数据结构定义为 case 类有什么缺点? 它对班级或其 ..
发布时间:2021-07-15 19:20:49 其他开发

“动态地"使用宏创建案例类

我想创建一个宏生成的密封抽象类和案例类的层次结构.http://docs.scala-lang.org 有一个类似的例子/overviews/macros/typemacros.html 但现在已过时.这还有可能吗? 我认为为某些指定的语法生成类型安全的 AST 会非常强大.理想情况下,IDE 能够解析所有类. 解决方案 首先是一些无耻的自我推销:Eugene Burmako 和我是 ..
发布时间:2021-07-15 19:19:27 其他开发

Scala 宏:使用 Scala 中的类的字段制作地图

假设我有很多类似的数据类.这是一个示例类 User,其定义如下: case class User (name: String, age: Int, posts: List[String]) {val numPosts: Int = posts.length...def foo = "bar"...} 我对自动创建一个方法(在编译时)感兴趣,该方法返回一个 Map ,每个字段名称在调用时都映射到 ..
发布时间:2021-07-15 19:15:31 其他开发

在 Scala 中映射的案例类

是否有一种很好的方法可以转换 Scala case class 实例,例如 case class MyClass(param1: String, param2: String)val x = MyClass("你好", "世界") 转换成某种映射,例如 getCCParams(x) 返回“param1" ->“你好",“param2" ->“世界" 适用于任何案例类,而不仅仅是预定义的.我 ..
发布时间:2021-07-15 19:13:15 其他开发

如何绕过 22 个字段的 Scala 案例类限制?

Scala 案例类在构造函数中限制为 22 个字段.我想超过这个限制,有没有办法通过继承或组合来处理案例类? 解决方案 最近(2016 年 10 月,OP 六年后),博客文章“Scala 和 22" 来自 Richard Dallaway 探索了这个限制: 早在 2014 年,Scala 2.11 发布时,就移除了一个重要的限制: 带有 > 的案例类现在允许使用 22 个参数. ..
发布时间:2021-07-15 19:13:06 其他开发

一般重写 Scala 案例类

是否可以通用替换案例类中的参数?更具体地说,假设我想要一个替代函数,它接收一个“查找"案例类和一个“替换"案例类(如语法规则的左侧和右侧)以及一个目标案例类,并且该函数将返回一个带有 find 案例类参数的新案例类替换为替换案例类?该函数还可以简单地采用一个案例类(Product?)和一个要应用于案例类的所有参数/产品的函数. 显然,给定一个特定的案例类,我可以使用 unapply 和 ap ..
发布时间:2021-07-06 18:45:38 其他开发

基于不同的案例类创建数据集

嗨,我有一个 RDD,它基本上是在读取 CSV 文件后制作的.我已经定义了一个方法,它基本上根据输入参数将 rdd 的行映射到不同的 case 类. 返回的RDD需要转换为dataframe当我尝试运行相同的程序时,出现以下错误. 定义的方法是 case class Australiafile1(sectionName:String,progressCentre:String,va ..
发布时间:2021-06-14 20:26:06 其他开发

为什么在 case 类的 `unapply` 方法的实现中有一个 `null` 检查?

我正在努力用我自己的实现替换案例类的伴随对象上的 unapply 方法.在调查了与实现 unapply 相关的许多不同切线之后,似乎在大多数情况下都有一个 null 保护,无论是在编译器生成的代码中还是在它的实现中明确地被重新定义.编译器为 unapply 生成的代码看起来与此类似(其中一些使用 eq 而不是 ne): def unapply(location: Location): Optio ..

如何模式匹配继承树中的抽象父类

我是具有 Java 背景的 Scala 新手. 有没有办法在类继承树中模式匹配超类(或特征),叶子作为案例类,节点抽象类或特征?据我所知,case类继承是不允许的. 我认为在大型继承树中模式匹配抽象类会很有帮助 在下面的代码中,最后一种情况是在编译过程中匹配语句错误 密封特质 Person {定义名称:字符串}case class Customer(name: String, ..
发布时间:2021-06-14 20:21:53 其他开发

如何在案例类伴侣中覆盖应用

情况是这样的.我想像这样定义一个案例类: case class A(val s: String) 并且我想定义一个对象以确保当我创建类的实例时,“s"的值总是大写,如下所示: 对象 A {def apply(s: String) = new A(s.toUpperCase)} 然而,这不起作用,因为 Scala 抱怨 apply(s: String) 方法被定义了两次.我知道 case 类 ..
发布时间:2021-06-14 20:14:03 其他开发