1

我正在尝试编写一个基于输入参数返回函数的函数。

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
}

谢谢。

4

2 回答 2

1

在处理原始对象时,模式匹配是无用的。

其他选择是:

Option(3).map(x => x < 7 || x % 2 == 0).getOrElse(false)

但是对于这种简单的情况,我更喜欢 simple if/else

对于您的第二种情况,返回基于 a 的部分函数的函数List[Int]将是:

def myFunction(myList: List[Int]): List[Int] => Boolean = {
    case _ :: Nil  if (myList.size < 7) => false
    case _ => true
}
于 2013-05-12T10:37:32.963 回答
0

我通常像这样进行模式匹配。任何表达式都会返回一个值 - if else 和匹配应该具有大致相同的结果。

  x match{
    case x if x < 7 => false
    case x if (x % 2 == 0) => false
    case _ => true   }
于 2013-05-12T15:56:58.670 回答