我在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
}
答案 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)
在您的版本中,m
,n
和k
都被定义为功能。因此,举例来说,当你说if (k)
它没有意义,因为if
需要Boolean
,但你给它一个函数。