大佬教程收集整理的这篇文章主要介绍了使用 val object(arg) = object 为 arg 赋值,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在关注关于 GraphQL 和 Sangria 的 this 教程。我想知道以下行
val JsObject(fIElds) = requestJsON
其中 requestJsON
是 JsValue
的对象。这种分配 fIElds
的方式对我来说是新的,我的问题是,您是否可以命名该模式或向我提供有关此结构的教程的链接。
这是 Extractor 模式,您可以在任意对象上实现 unapply 方法(如示例中所示)达到相同的结果。当您创建 case class
时,编译器会为您生成一个 unapply 方法,因此您可以执行以下操作:
case class Person(name : String,surname : String)
val person = Person("gianluca","aguzzi")
val Person(name,surName) = person
,
要知道的重要一点是,val
定义支持赋值左侧的 @H_801_30@Pattern,从而提供(功能的子集)模式匹配。 >
所以,你的例子相当于:
val fields = requestJSON match {
case JsObject(foo) => foo
}
有关详细信息,请参阅 Scala Language Specification Section 4.1 @H_801_30@Value Declarations and Definitions。
因此,例如,如果您有一个列表 l
,并且您想分配第一个元素和其余元素,您可以这样写:
val x :: xs = l
或者,对于方法返回元组的相当常见的情况,您可以编写:
val (result1,result2) = foo()
以上是大佬教程为你收集整理的使用 val object(arg) = object 为 arg 赋值全部内容,希望文章能够帮你解决使用 val object(arg) = object 为 arg 赋值所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。