Hola, estoy tratando de usar la coincidencia de casos con una función de orden superior. si la función devuelve verdadero, haga las mismas cosas para falso. Gracias.

def funk(ls:List[Int],f:Int=>Boolean):List[Int]=
{
  f match
  {
    case true => do something
    case false => do somethingelse
  }
}
1
Alim Öncül 15 nov. 2017 a las 18:09

2 respuestas

La mejor respuesta

Parece un buen lugar para aplicar "andThen" para la función parcial:

Esto es posiblemente lo que necesita:

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)
}

Solo investiga un poco sobre PartialFunction's:

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

0
Pavel 15 nov. 2017 a las 15:20

Tienes que ejecutar la función y pasar el valor de retorno a match case como

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
  }
}

Por ejemplo

def funk(ls:List[Int],f:Int=>Boolean):List[Int]=
{
  f(ls(0)) match
  {
    case  true => List(1,2)
    case false => List(4,3)
  }
}
0
Ramesh Maharjan 15 nov. 2017 a las 16:11