我有一个物体
object Constants {
val getA = "example.a.test"
val getB = "example.b.test"
val getC = "example.c.test"
.
.
.
}我有另一个类,在if-else循环中导入类后,我将在其中访问这些值
if(str == "A") {
println(Constants.getA)
}
else if (str == "B") {
println(Constants.getB)
} else {
println(Constants.getC)
}
// and so on...注意:这只是我的示例代码,但是if-else循环会变得很复杂。有没有一种方法可以通过将"str“变量直接传递给对象来简化这一过程,比如"Constants.get$str”或其他更简单的方法?我收到圈复杂度Scala检查样式警告
发布于 2020-01-22 13:23:08
您可以使用模式匹配并在常量中创建一个新函数。
def getString(str: String) = {
str match {
case "A" => "example.a.test"
case "B" => "example.b.test"
case "C" => "example.c.test"
case _ => "Wrong input"
}
}发布于 2020-01-22 13:46:40
您可以使用键/值对象来处理代码
例如,使用Map:
object Constants {
val get = Map("A" -> "example.a.test", "B" -> "example.b.test", "C" -> "example.c.test" , ...)
}您可以通过以下方式使用它
println( get("A"))而不是你所拥有的所有if else循环。您甚至还可以对键或值进行迭代:
get.keys.foreach{ i =>
print( "Key = " + i )
println(" Value = " + get(i) )}我认为这种方法可以更简单,我希望答案是有用的。
https://stackoverflow.com/questions/59853079
复制相似问题