2

一度にすべてを設定したい遅延 val 文字列がたくさんあり、それらを設定する必要がある特定のケースがありますnull(これは Scala の方法ではないことはわかっていますが、Java との互換性のためです)。

通常、典型的な複数代入の方法で変数を設定できます。

scala> val (a: String, b: String) = ("a", "b")
a: String = a
b: String = b

ミックスに null を追加するとすぐに、すべてがうまくいかなくなります。

scala> val (a: String, b: String) = (null, null)
<console>:12: error: pattern type is incompatible with expected type;
 found   : String
 required: Null
       val (a: String, b: String) = (null, null)
               ^
<console>:12: error: pattern type is incompatible with expected type;
 found   : String
 required: Null
       val (a: String, b: String) = (null, null)

複数の型付き変数を null に設定する方法はありますか?

これは問題ないので、複数の変数の設定に関連するパターン マッチングと関係があると思います。

scala> val a: String = null
a: String = null
4

5 に答える 5

2

この構文は機能しているようです。

scala> val (a, b) = (null, null): Tuple2[String,String]
a: String = null
b: String = null
于 2013-06-27T03:31:47.047 に答える
2

代替案

scala> val (a,b): (String,String) = (null, null)
a: String = null
b: String = null

scala> val (a, b) = (null: String, null: String)
a: String = null
b: String = null

scala> val (a,b) = (null, null): (String, String)
a: String = null
b: String = null
于 2013-06-27T07:10:16.817 に答える
1

あなたの例の問題はval (a: String, b: String). 変数の型を指定しようとしますが、この種の構文はタプルのショートカットです。

タイプを直接指定する場合は、次のような構文を使用できます。

scala> val (x, y): Tuple2[String, String] = (null, null)
x: String = null
y: String = null
于 2013-06-27T03:45:02.080 に答える