我正在尝试编写一个基于输入参数返回函数的函数。
def myFunction(x: Int): x => Boolean {
x => if (x < 7) false
if (x % 2 == 0) false
else true
}
因此,如果x小于7,甚至会返回false。否则就是。
如何使用模式匹配来编写它?
如果对Ints使用模式匹配毫无意义,那么像Ints列表那样更复杂的东西呢。
def myFunction(myList: List[Int]): x => Boolean {
// just doing something simple here real life is more complex.
x => if (myList.size() < 7) false
else true
}
感谢。
答案 0 :(得分:1)
在处理原始对象时,模式匹配是无用的。
其他替代方案是:
Option(3).map(x => x < 7 || x % 2 == 0).getOrElse(false)
但是对于这个简单的情况,我更喜欢简单的if/else
。
对于第二种情况,基于List[Int]
返回部分函数的函数将是:
def myFunction(myList: List[Int]): List[Int] => Boolean = {
case _ :: Nil if (myList.size < 7) => false
case _ => true
}
答案 1 :(得分:0)
我通常会像这样模仿匹配。任何表达式都返回一个值 - 如果是else,匹配应该具有大致相同的结果。
x match{
case x if x < 7 => false
case x if (x % 2 == 0) => false
case _ => true }