1

Scala でプレースホルダーの「奇妙な」使用法を見つけました: in 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 に答える