“ val Class.Something(2,_)= doSomething()”的含义是什么?

Aur*_*n B 3 scala pattern-matching

我正在阅读Lihaoyi关于他的解析器组合器框架的演示,同时仅了解Scala的基础知识。我碰到了我根本不明白的那句话:

val Parsed.Success(2, _) = parse("1+1", expr(_))
Run Code Online (Sandbox Code Playgroud)

来自Java,看起来很奇怪。有人知道它做什么吗?提前致谢。

https://www.lihaoyi.com/fastparse/

在Java中相当于什么?

pme*_*pme 7

Scala知道提取器对象 -请参阅docs.scala-lang.org

它们主要用于模式匹配-请参阅docs.scala-lang.org

因此,这可以与vals 一起使用:

val customer2ID = CustomerID("Nico")
val CustomerID(name) = customer2ID
println(name)  // prints Nico
Run Code Online (Sandbox Code Playgroud)

scala.MatchError如果解析器不起作用,您的示例将抛出。

尝试val Parsed.Success(2, _) = parse("1+2", expr(_))//应该为3