我一直在學習Scala,並決定使用json4s進行JSON解析。我決定使用XPath語法進行反序列化,並遇到了我以前從未見過的這種奇怪的語法。奇怪的案例類語法
val json = JsonMethods.parse("""{"meaningOfLife": 42}""")
val JInt(x) = json\"meaningOfLife"
的部分混淆我是該位就在這裏
val JInt(x) = ...
我不能換我周圍發生的事情有想法,我甚至不知道如何尋找這樣的語法或它叫什麼。誰能幫我嗎? Scala是一種令人驚歎的語言,具有很多整潔的功能,我不習慣於其他語言,如C++和Java。
編輯
爲了澄清,我很困惑,因爲x
是沒有定義,但它以某種方式被傳遞到隨後被分配到的json\"meaningOfLife"
結果返回一個JValue
的功能或構造。
編輯2
經過一番研究和玩弄,我想通了,這已經是與case類。我能夠運行下面的代碼。
case class MyCaseClass (x: Int)
val MyCaseClass(x) = new MyCaseClass(5)
println(x, x.getClass) // prints (5,int)
其中,看了一些代碼後,讓我很好地理解發生了什麼。
val MyCaseClass(x) = MyCaseClass(5)
是提取(因爲缺乏一個更好的詞),從實例MyCaseClass
的Int
值5
並存儲到x
,這意味着x
將Int
類型。
在json4s的代碼中,JInt
是運算符\
返回的JValue
。因此,JInt(x)
正在取出BigInt
(存儲在類JInt
中),並將其從我收集的值中放入x
。
但我仍然有一個問題。這個過程叫做什麼?有沒有關於它的文檔?