我是 Scala 的新手,并且不知道如何更换 vars 并在代码中使用 vals 。代码中有很多变量。
以下只是一段代码:
var fa = new JsArray
val ra = Json.obj("key1" -> val1, "key2" -> val2, "key3" -> val3)
fa = fa.:+(ra)
如何使用val for fa?
第二案例:
val a = 10
var dr: String = ""
if (a == 10) {
dr = "true"
}
else {
dr = "false"
}
println("dr: " + dr)
在这里,如果我在 if / else 中添加“dr” “dr”,则无法在 println()中访问即可。 是否有任何帮助可以避免 var ?
答案 0 :(得分:4)
在Scala中,if/else
是一个返回值的表达式。
val dr = if (condition) value1 else value2
答案 1 :(得分:2)
模式匹配是让dr
成为val
的不错选择,特别是如果您需要针对多个不同的值测试a
。
val a = 10
val dr = a match {
case 10 => true
case _ => false
}
print(dr)
case 10 => true
这实质上说“如果 匹配 10 ,然后将 true 分配给 dr “”
case _ = false
这表示“如果以上情况均不匹配 a ,则将false指定给 dr 强>“
请注意,dr
在上面的示例中将是Boolean
类型,这比使用String
表示true / false要好得多。如果你出于某种原因确实需要一个字符串,那么你会这样做。
val dr = a match {
case 10 => "true"
case _ => "false"
}
print(dr)
答案 2 :(得分:1)
如果您使用val,则不允许为其分配新值,因此在上面的代码示例中,如果您使用
切换第三行val fa2 = fa.:+(ra)
然后fa可以是val。
答案 3 :(得分:1)
对于这种情况,模式匹配可能是最好的风格,但是如果你想要写if else
就是这样的话。注意在Scala中评估if
语句时,它返回的结果与任何其他代码块一样。
val a = 10
val dr = if (a == 10) {
"true"
}
else {
"false"
}
println("dr: " + dr)
答案 4 :(得分:1)
我只是添加,或许代替将dr
表示为字符串,最好将其键入为Boolean
,然后您可以简单地将其评估为结果条件:
val a = 10
val dr = a == 10
println("dr: " + dr)