有谁可以向我解释为什么以下
/**
* Returns a set transformed by applying `f` to each element of `s`.
*/
def map(s: Set, f: Int => Int): Set = x => exists(s, y => f(y) == x)
Run Code Online (Sandbox Code Playgroud)
不等于
def map(s: Set, f: Int => Int): Set = x => exists(s, f(x))
Run Code Online (Sandbox Code Playgroud)
其中"exists"是一个函数,它返回s
(第一个参数)中是否存在满足p
(第二个参数)的有界整数.
为什么需要指定"y => f(y)== x"?太感谢了!
Tza*_*har 10
exists
的第二个参数的类型为Int => Boolean
(右?),换句话说,它从期望的功能Int
来Boolean
.现在,f(x)
不符合那种类型 - 它有类型Int
.所以 - y => f(y) == x
创建一个具有正确类型的函数,如果其输入等于,则返回true x
.
如果多余的字符给你带来了麻烦 - 你也可以使用匿名参数 '_' 来缩短它:
def map(s: Set, f: Int => Int): Set = x => exists(s, f(_) == x)
Run Code Online (Sandbox Code Playgroud)