将多个类型变量设置为null

时间:2013-06-27 02:47:01

标签: scala

我有一堆懒的val字符串,我想一次设置,并且在某种情况下它们应该设置为null(我知道这不是Scala方式,但是它是为了Java兼容性)

通常我可以用典型的多分配方式设置变量:

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

只要我在混音中添加空值,一切都变得混乱:

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

5 个答案:

答案 0 :(得分:4)

模式匹配有一个益智游戏:

http://scalapuzzlers.com/#pzzlr-035

没有人提供明显的东西吗?

scala> val a,b,c: String = null
a: String = null
b: String = null
c: String = null

AIA,如果我遗失了什么。

差异在4.1中指定。

答案 1 :(得分:2)

这种语法似乎有效。

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

答案 2 :(得分: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

答案 3 :(得分:2)

为了更简洁,您可以使用以下语法:

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

答案 4 :(得分:1)

您示例中的问题出在val (a: String, b: String)中。您尝试指定变量的类型,但这种语法是元组的快捷方式。

如果要直接指定类型,可以使用以下语法:

scala> val (x, y): Tuple2[String, String] = (null, null)
x: String = null
y: String = null