来自FP课程:
type Set = Int => Boolean // Predicate
/**
* Indicates whether a set contains a given element.
*/
def contains(s: Set, elem: Int): Boolean = s(elem)
为什么这有意义?
assert(contains(x => true, 100))
基本上它所做的就是为100
函数提供价值x => true
。即,我们提供 100,它返回true。
但这与集合有什么关系?
无论我们放什么,它都会返回true
。它的意义在哪里?
我知道我们可以提供我们自己的集合实现/函数作为参数,它表示提供的值在集合内(或不在集合内) - 然后(仅)这个实现使contains
函数被某种意义/意义/逻辑填充/功能。
但到目前为止,它看起来像是一个无意义的功能。它被命名contains
但名称不代表逻辑。我们可以调用它,apply()
因为它的作用是将函数(第一个参数)应用于一个值(第二个参数)。只有名字contains
可以告诉读者作者可能想说什么。是不是太抽象了,也许吧?