在寻找别的东西时,我只是偶然发现了一些关于恶魔案例类继承的评论.这个东西被称为ProductN,可怜虫和国王,精灵和巫师,以及如何通过案例类继承丢失某种非常理想的属性.那么case类继承有什么问题呢?
有没有一种简单的方法将案例类转换为元组?
当然,我可以轻松编写样板代码来执行此操作,但我的意思是没有样板.
我真正想要的是一种轻松地按字典顺序编写案例类的方法.我可以通过导入scala.math.Ordering.Implicits._来实现元组的目标,瞧,我的元组有一个为它们定义的Ordering.但scala.math.Ordering中的含义一般不适用于案例类.
我已经读过Scala'a case class构造自动生成拟合equals和hashCode实现.生成的代码到底是什么样的?
根据scala-wartremover静态分析工具,我必须将"final"放在我创建的每个case类的前面:错误消息说"case classes必须是final".
根据scapegoat(Scala的另一个静态分析工具)而不是我不应该(错误消息:"案例类的冗余最终修饰符")
谁是对的,为什么?
我正在使用Scala Combinators创建解析器.太棒了.我最终得到的是一长串陷入困境的案例类,例如:ClassDecl(Complex,List(VarDecl(Real,float), VarDecl(Imag,float)))只需要100倍.我想知道是否有一种很好的方法以树状方式打印这样的案例类,以便更容易阅读..?(或其他形式的漂亮印刷品)
ClassDecl
name = Complex
fields =
- VarDecl
name = Real
type = float
- VarDecl
name = Imag
type = float
Run Code Online (Sandbox Code Playgroud)
我想结束这样的事情
编辑:奖金问题
是否还有一种方法来显示参数的名称..?喜欢:ClassDecl(name=Complex, fields=List( ... )?
Scala案例类在构造函数中限制为22个字段.我想超过这个限制,有没有办法用继承或组合使用案例类?
我的自定义异常类型应该是case classes吗?
从好的方面来说,我得到了提取器.
在负面,我得到不正确的相等语义.但我可以通过压倒来避免这种情况equals.
那么,从概念上讲,将它们制作成是有道理的case class吗?
为什么没有参数列表的案例类不推荐使用Scala?为什么编译器建议使用()参数列表呢?
编辑:
有人请回答我的第二个问题......:|
我正在从Slick迁移到Slick 2,在Slick 2中你想tupled在投影到案例类时使用该方法(如http://slick.typesafe.com/doc/2.0.0-所示)RC1/migration.html)
问题是当case类有一个伴随对象时,即如果你有这样的东西
case class Person(firstName:String,lastName:String) {
}
Run Code Online (Sandbox Code Playgroud)
与伴侣对象一起
object Person {
def something = "rawr"
}
Run Code Online (Sandbox Code Playgroud)
在相同的范围内,该tupled方法不再有效,因为它试图运行tupled的object,而不是,case class.
有没有一种方法来检索case class的Person,而不是object,所以你可以调用tupled正确?
有特点
trait Persisted {
def id: Long
}
Run Code Online (Sandbox Code Playgroud)
如何实现一个接受任何case类实例的方法并返回其特征混合的副本?
该方法的签名如下:
def toPersisted[T](instance: T, id: Long): T with Persisted
Run Code Online (Sandbox Code Playgroud) case-class ×10
scala ×10
deprecated ×1
exception ×1
hashcode ×1
inheritance ×1
mixins ×1
pretty-print ×1
singleton ×1
slick ×1
traits ×1
tuples ×1