有没有演示如何在Scala中使用这样的占位符?

xnn*_*ygn 1 scala

我在Scala中发现占位符的"奇怪"用法:在预编译器中

class Precompiler {
  var sources = Array[File]()
  var workingDirectory: File = _
  var targetDirectory:File = _
  var templates = Array[String]()
  var info:{def apply(v1:String):Unit} = (value:String)=>println(value)
  var contextClass:String = _
  var bootClassName:String = _
  // ...
}
Run Code Online (Sandbox Code Playgroud)

这是部分功能吗?还是其他什么?是否有任何演示来显示像这样的占位符的用法?

Owe*_*wen 7

实际上,不,这只是无聊的null.来自Scala语言规范:

变量定义var x:T = _只能作为模板的成员出现.它引入了一个带有类型T和默认初始值的可变字段.默认值取决于类型T,如下所示:

  0        if T is Int or one of its subrange types,
  0L       if T is Long,
  0.0f     if T is Float,
  0.0d     if T is Double,
  false    if T is Boolean,
  ()       if T is Unit,
  null     for all other types T .
Run Code Online (Sandbox Code Playgroud)

null在这些案例中写作可能更清楚.我想_可能看起来更像Scala-y.