我有一堆懒的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
答案 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