Tag: 案例级

dynamic混合性状

有一个特点 trait Persisted { def id: Long } 我该如何实现一个方法来接受任何case类的实例,并将其中的特性与混合的特性一起返回? 该方法的签名如下所示: def toPersisted[T](instance: T, id: Long): T with Persisted

同伴对象在类中时使用.tupled方法

我正在从Slick迁移到Slick 2,而在Slick 2中,您将在投影到一个案例类时使用tupled方法(如http://slick.typesafe.com/doc/2.0.0所示-RC1 / migration.html ) 问题是案例类有一个伴侣对象,即如果你有这样的事情 case class Person(firstName:String,lastName:String) { } 随同伴侣对象 object Person { def something = "rawr" } 在相同的范围内, tupled方法不再起作用,因为它试图在object上运行tupled ,而不是case class 。 有没有办法检索Person的case class而不是object ,所以你可以正确调用tupled ?

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

当你创build一个case类时,编译器会创build一个相应的伴随对象,其中包含一些case类的好东西:一个apply工厂方法匹配主构造函数equals , hashCode和copy 。 有点奇怪,这个生成的对象扩展了FunctionN。 scala> case class A(a: Int) defined class A scala> A: (Int => A) res0: (Int) => A = <function1> 只有在以下情况下才能这样做: 没有手动定义的伴侣对象 只有一个参数列表 没有types参数 案例类不是抽象的。 似乎是两年前添加的 。 最新的化身在这里 。 有没有人使用这个,或知道为什么被添加? 它使用静态转发器方法稍微增加了生成的字节码的大小,并显示在伴随对象的#toString()方法中: scala> case class A() defined class A scala> A.toString res12: java.lang.String = <function0> UPDATE 使用单个apply方法手动创build的对象不会被自动视为FunctionN : object HasApply { def […]

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

有一个简单的方法来将一个案例类转换成一个元组? 当然,我可以轻松地写出样板代码来做到这一点,但我的意思是没有样板。 我真正追求的是一种轻松地按照字典顺序进行案例分类的方法。 我可以通过导入scala.math.Ordering.Implicits._实现元组的目标,并且瞧,我的元组有一个为它们定义的Ordering。 但是,scala.math.Ordering中的含义不适用于一般的case类。

case caseinheritance的* so *错误是什么?

在寻找别的东西的时候,很偶然的,我偶然发现了一些关于恶意案例类inheritance的评论。 有这样的东西,叫做ProductN ,可怜的人,国王,精灵和巫师,以及某种非常理想的财产如何失去案例类inheritance。 那么case类inheritance有什么问题呢?

案例类在Scala中映射

有谁知道是否有一个很好的方式,我可以转换一个Scala案例类实例,例如 case class MyClass(param1: String, param2: String) val x = MyClass("hello", "world") 进入某种映射,例如 getCCParams(x) returns "param1" -> "hi", "param2" -> "3" 哪些适用于任何案例类,而不仅仅是预定义类。 我发现你可以通过编写一个询问底层产品类的方法,例如, def getCCName(caseobj: Product) = caseobj.productPrefix getCCName(x) returns "MyClass" 所以我正在寻找类似的解决scheme,但案例类字段。 我可以想象一个解决scheme可能需要使用Javareflection,但是如果case类的底层实现发生变化,我不愿意写一些可能会在未来的Scala版本中破坏的东西。 目前我正在Scala服务器上工作,并使用案例类定义协议及其所有消息和exception,因为它们是如此美丽,简洁的构造。 但是,我需要将它们翻译成Java映射,以便通过消息传递层为任何客户端实现使用。 我目前的实现只是分别为每个案例类定义一个翻译,但是find一个通用的解决scheme将是很好的。

简单的惯用方法来定义一个简单的案例类的订购

我有一个简单的斯卡拉案例类实例的列表,我想打印他们在使用list.sorted可预测,字典顺序,但收到“没有隐式sorting定义…”。 是否存在一个隐含的提供案例类的词典sorting? 是否有简单的惯用方式将混合词典sorting整合到案例分类中? scala> case class A(tag:String, load:Int) scala> val l = List(A("words",50),A("article",2),A("lines",7)) scala> l.sorted.foreach(println) <console>:11: error: No implicit Ordering defined for A. l.sorted.foreach(println) ^ 我不喜欢“黑客”: scala> l.map(_.toString).sorted.foreach(println) A(article,2) A(lines,7) A(words,50)

声明Scala case类有什么缺点?

如果你编写的代码使用了很多美丽的,不可变的数据结构,case类似乎是天赐之物,只需要一个关键字就可以免费获得以下所有内容: 一切默认是不可变的 吸气剂自动定义 体面的toString()实现 符合equals()和hashCode() Companion对象与用于匹配的unapply()方法 但是,将一个不可变的数据结构定义为一个case类有什么缺点? 它对class级或其客户有什么限制? 有没有情况下,你应该更喜欢非案例课?

案例对象与Scala中的枚举

有什么关于什么时候使用case类 (或case对象)和扩展Scala中的Enumeration的最佳实践指南? 他们似乎提供了一些相同的好处。

斯卡拉的案例class和class级有什么区别?

我在谷歌searchfind一个case class和一个class之间的差异。 大家都提到,当你想在类上进行模式匹配时,使用case类。 否则,使用类,也提到一些额外的津贴,如等于和哈希代码覆盖。 但是,这些是唯一一个应该使用案例类而不是类的原因吗? 我想在Scala中这个function应该有一些非常重要的原因。 什么是解释或有一个资源来了解更多关于斯卡拉案例类从?