我有一个方法(注意我已经简化,使问题更简单)
def getMyInt(flag1: Boolean, flag2: Boolean): Int = {
if (flag1) 0;
else {
if (flag2) 1;
if (flag2) 2;
}
Run Code Online (Sandbox Code Playgroud)
}
问题是即使内部if表达式返回Ints,else那个包装也将返回Unit.因此,我得到:
Multiple markers at this line
- type mismatch; found : Unit
required: Int
Run Code Online (Sandbox Code Playgroud)
有小费吗?
您可以尝试包装flag1并flag2在其中Tuple进行模式匹配.
def getMyInt(flag1: Boolean, flag2: Boolean): Int = (flag1, flag2) match {
case (true, _) => 0
case (_, true) => 1
//Other cases
}
Run Code Online (Sandbox Code Playgroud)
此外,控制标志作为参数闻起来很有趣.Martin Fowler有一篇关于重构标志参数的文章.
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |