相关疑难解决方法(0)

Scala模式匹配相当印刷

是否有可能以某种方式将PartialFunction(让我们假设它总是只包含一个案例)编组成人类可读的东西?

假设我们有类型Any(messages:List [Any])的集合和使用模式匹配块定义的PartialFuntion [Any,T]的数量.

case object R1
case object R2
case object R3

val pm1: PartialFunction[Any, Any] = {
  case "foo" => R1
}

val pm2: PartialFunction[Any, Any] = {
  case x: Int if x > 10 => R2
}

val pm3: PartialFunction[Any, Any] = {
  case x: Boolean => R3
}

val messages: List[Any] = List("foo", 20)
val functions = List(pm1, pm2)
Run Code Online (Sandbox Code Playgroud)

然后我们可以找到所提供的PF和相关应用程序匹配的所有消息

val found: List[Option[Any]] = functions map { f =>
  messages.find(f.isDefined).map(f)
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我需要以 …

scala pattern-matching human-readable

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

为什么我在 Scala REPL 上的函数打印为“Lambda”?

我在 Scala REPL 上创建了这个函数

scala> val multiDouble = (input :Double) =>
 |      {
 |          val toMulti = 2;
 |          toMulti * input 
 |      }: Double
Run Code Online (Sandbox Code Playgroud)

输出是val multiDouble: Double => Double = Lambda$1351/1709493124@7b44bfb8

根据我的研究,应该是val multiDouble: Double => Double = <function01>

我不明白为什么 Scala REPL 打印Lambda$1351/1709493124@7b44bfb8而不打印<function01>.

scala scala-repl

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