Scala导入中的双下划线是什么意思?

ree*_*rix 7 scala playframework

假设您正在导入这样的库:

import play.api.libs.json.{__, Writes }
Run Code Online (Sandbox Code Playgroud)

双下划线有什么作用?

小智 9

JsPath是用于创建读/写的核心构建块.JsPath表示JsValue结构中的数据位置.您可以使用JsPath对象(根路径)通过使用类似于遍历JsValue的语法来定义JsPath子实例:

import play.api.libs.json._

val json = { ... }

// Simple path
val latPath = JsPath \ "location" \ "lat"

// Recursive path
val namesPath = JsPath \\ "name"

// Indexed path
val firstResidentPath = (JsPath \ "residents")(0)
Run Code Online (Sandbox Code Playgroud)

play.api.libs.json包定义了JsPath的别名:__(双下划线).如果您愿意,可以使用此方法:

val longPath = __ \"location"\"long"


小智 5

它是从包对象json导入值的:

package object json {

  /**
   * Alias for `JsPath` companion object
   */
  val __ = JsPath

}
Run Code Online (Sandbox Code Playgroud)

  • 语言中没有任何内容,甚至没有习惯用法,只是两个下划线构成了有效的标识符(而单个下划线是关键字) (2认同)