Scala:什么是最简单的方法实现' mystery'我能得到吗?

时间:2015-03-09 23:41:07

标签: scala

我在Scala中写了一个非常奇怪的方法。

def mystery(p: Int => String => Boolean): Int = ???

现在我无法弄清楚应该具有哪些实现和参数值。

那么这个方法最简单的实现是什么?我们可以传递给它的价值是什么?

我的尝试:

def mystery(p: Int => String => Boolean): Int = {
    val m = (x1: Int) => p(x1)
    val n = (x2: String) => m(_)(x2)
    val k = (x3: Boolean) => p(_)(_)(x3)
    if (k) 1 else 0
}

1 个答案:

答案 0 :(得分:0)

这个怎么样? p是一个函数,因此要使用它,您需要传递参数。参数是curry,功能相当于Int => (String => Boolean)。首先给它Int,然后返回一个函数String => Boolean。所以你给那个一个String,它会返回一个Boolean

def mystery(p: Int => String => Boolean): Int = {
  val a = p(1)
  val b = a("2")
  if(b) 1 else 0
}

val f: Int => String => Boolean = (i: Int) => (s: String) => i.toString == s

mystery(f)

在您的版本中,mnk都被定义为功能。因此,举例来说,当你说if (k)它没有意义,因为if需要Boolean,但你给它一个函数。