我发现在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 = _
// ...
}这是partial函数吗?或者别的什么?有没有像这样展示占位符用法的演示?
发布于 2012-06-04 10:31:05
实际上,不,这只是一个无聊的老null。从Scala Language Spec
变量定义var x:t=_只能作为模板的成员出现。它引入了一个类型为T的可变字段和一个默认初始值。默认值取决于类型T,如下所示:
如果T是Int或其子范围类型之一,则为0;如果T为Long,则为0L;如果T为Float,则为0.0f;如果T为Double,则为0.0d;如果T为布尔值,则为false;如果T为Unit,则为();对于所有其他类型T,则为null。
在这些情况下,编写null可能会更清楚。我猜_可能看起来更像Scala-y。
https://stackoverflow.com/questions/10875606
复制相似问题