我一直在学习 Scala,并决定使用 json4s 进行 JSON 解析。我决定使用 XPath 语法进行反序列化,并遇到了我以前从未见过的这种奇怪的语法。
val json = JsonMethods.parse("""{"meaningOfLife": 42}""")
val JInt(x) = json\"meaningOfLife"
让我困惑的部分就在这里
val JInt(x) = ...
我无法想象那里发生了什么,我什至不知道如何搜索这种语法或它叫什么。谁能帮我吗?Scala 是一种了不起的语言,具有许多我在 C++ 和 Java 等其他语言中不习惯的简洁特性。
编辑
澄清一下,我很困惑,因为x
没有定义,但它以某种方式被传递给函数或构造函数,然后被分配给json\"meaningOfLife"
返回 a的结果JValue
。
编辑 2
经过一些研究和玩耍,我发现这与案例类有关。我能够运行以下代码。
case class MyCaseClass (x: Int)
val MyCaseClass(x) = new MyCaseClass(5)
println(x, x.getClass) // prints (5,int)
在查看了一些代码之后,这让我对正在发生的事情有了很好的理解。
val MyCaseClass(x) = MyCaseClass(5)
正在从实例化的Int
值中提取(因为没有更好的术语)并将其存储到中,意思是.5
MyCaseClass
x
x
Int
在 json4s 的代码中,aJInt
是运算JValue
符\
返回的 a。因此,JInt(x)
取出 a BigInt
(存储在 class 中JInt
)并将其放入x
我收集的值中。
但我还有一个问题。这个过程叫什么?有没有关于它的文件?