小编kpb*_*nek的帖子

scala案例类复制实现

我无法找到如何在scala中为case类实现副本.

我能以某种方式检查吗?

我虽然Intellij可以指出我实现,但它不想跳,我不明白为什么:/

scala class case

6
推荐指数
1
解决办法
1439
查看次数

将函数转换为偏函数scala

我有一个密封的特性:

sealed trait ActorMessage
case class AddX(x: Int) extends ActorMessage
case class RemoveX(x: Int) extends ActorMessage
Run Code Online (Sandbox Code Playgroud)

我还有一个功能来处理所有消息并警告我非详尽匹配:

def handleMessage: ActorMessage => Unit = {
  case AddX(x) => ...
  case RemoveX(x) => ...
}
Run Code Online (Sandbox Code Playgroud)

Actor 需要一个 PartialFunction[Any, Unit]。PartialFunction 扩展了 Function,这意味着我不能将我的 Function 分配为 PartialFunction。

我写了简单的转换器:

def liftToPartialFunction[FUND <: PFUND, B, PFUND](f: Function[FUND, B]): PartialFunction[PFUND, B] = new PartialFunction[PFUND, B] {
  override def isDefinedAt(x: PFUND): Boolean = x.isInstanceOf[FUND]
  override def apply(v1: PFUND): B = f(v1.asInstanceOf[FUND])
}
Run Code Online (Sandbox Code Playgroud)

但是有没有更好的方法来做到这一点?或者标准scala库中是否有任何等价物?

scala case partialfunction actor akka

5
推荐指数
2
解决办法
1613
查看次数

标签 统计

case ×2

scala ×2

actor ×1

akka ×1

class ×1

partialfunction ×1