[英]how to initialize immutable val with scala without creating another val
我有以下代码:
private def formatQuery(q:String = ""):String = {
val q2 = if (q=="") "*" else "'%s'".format(q)
[...]
我只想知道是否有一些惯用的方法来避免声明q2值
有点像
private def formatQuery(
q:String = if (q=="") "*" else "'%s'".format(q)
):String = {
[...]
这显然不起作用
您是否有特定原因要避免分配给变量q2
? 样式本身看起来不错。
您提出的建议显然不起作用,但是这里有两个建议可行。
如果您的原始功能是:
private def formatQuery(q:String = ""):String = {
val q2 = if (q=="") "*" else "'%s'".format(q)
doSomething(q2)
}
一种选择是只在要传递q2
的地方传递if-else表达式:
private def formatQuery(q:String = ""):String =
doSomething(if (q=="") "*" else "'%s'".format(q))
另一个是做一个单独的功能:
private def formatQuery(q:String = ""):String =
runQuery(if (q=="") "*" else "'%s'".format(q))
private def runQuery(q2:String):String =
doSomething(q2)
第三种方法是模式匹配。
private def formatQuery(q: String = ""): String = q match {
case _ if q.length == 0 => "*"
case _ => "'%s'".format(q)
}
我更喜欢您的方式,首先是因为它是好的样式。
可能有一个误解:方法主体内部的val不是封闭类或trait或...的字段,而只是局部变量。 因此,关键字val用于创建字段和创建局部变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.