我甚至不确定这是关于闭包的,但我无法在下面的代码中推断e
。
type Set = Int => Boolean
/* characteristic function of Set */
def contains(s: Set, elem: Int): Boolean = s(elem)
/* definition of a singleton set, returning a set of only one given element */
def singletonSet(elem: Int): Set = e => e == elem
在上面的代码中,e
来自何处?我该怎么推理呢?
答案 0 :(得分:2)
这不是关闭。 e
只是代表Int
类型的元素,由Set
类型的声明决定,Function1[Int, Bool]
类型是e
的别名。将Int
视为未来singletonSet
值的占位符,您将通过这些值。这只是anonymous function syntax。
当您致电Int
时,您必须传递e
将反映的println(contains(singletonSet(1), 1)) // yields true
println(contains(singletonSet(1), 2)) // yields false
参数:
println(contains(e => e == 1, 1))
如果您直接传递匿名函数,那么同样适用:
{{1}}