Scala匹配高阶函数返回值

时间:2017-11-15 15:09:50

标签: scala function

您好我试图使用具有高阶函数的大小写匹配。 if函数返回true为false做同样的事情。谢谢。

def funk(ls:List[Int],f:Int=>Boolean):List[Int]=
{
  f match
  {
    case true => do something
    case false => do somethingelse
  }
}

2 个答案:

答案 0 :(得分:0)

看起来是一个适用的地方"然后"部分功能:

这可能是您需要的:

def funk(ls: List[Int], f: Int => Boolean): List[Int] = {
  val z = f.andThen(r => r match {
    case true => List(1, 2) // ..something 
    case false => List(3, 4) // somethingElse
  })
   // function application
  z(5)
}

围绕PartialFunction' s挖掘一下:

http://www.scala-lang.org/api/current/scala/PartialFunction.html

答案 1 :(得分:0)

你必须执行该函数并将返回值传递给match case

def funk(ls:List[Int],f:Int=>Boolean):List[Int]=
{
  f(some integer value) match
  {
    case  true => return a list of integers
    case false => return a list of integers
  }
}

例如

def funk(ls:List[Int],f:Int=>Boolean):List[Int]=
{
  f(ls(0)) match
  {
    case  true => List(1,2)
    case false => List(4,3)
  }
}