1

我在 Scala 中发现了占位符的“奇怪”用法:在precompiler-in-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 = _
  // ...
}

这是偏函数吗?还是别的什么?是否有任何演示可以显示这样的占位符的用法?

4

1 回答 1

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 .

null在这些情况下写可能会更清楚。我想_可能看起来更像 Scala-y。

于 2012-06-04T02:31:04.527 回答