所以假设我有一个函数需要一个定义为 Int => Boolean
的集合和一个函数 f
像这样:def map(s: Set, f: Int => Int): Set = {}
现在我如何应用这个 f
到这个集合的每个元素 s
.
def map(s: Set, f: Int => Int): Set = { (i: Int) => f(s(i)) }
这当然是不正确的,因为在
f(s(i))
, 's(i)' 返回一个 bool 值,因此不能应用 f
在上面。问题是如何访问 Set 的每个元素并应用此 f
在上面?这个问题是 Coursera 的 Functional Programming with Scala 类(class)的一部分。
最佳答案
本类(class)的目标是帮助您理解函数模型,以及在这种情况下,如何用函数表示集合(称为该集合的特征函数)。
这里不是最终解决方案,而是有关如何推理此问题的提示:
给定特征函数 f: Int => Boolean
定义您的集合和 x
,一个整数,如果 f(x) == true
,则 x 属于集合。现在,如果你有一个函数 g:Int=>Int
如果您想在集合上进行映射,您想要的是将该函数应用于您知道属于该集合的元素:if (f(x)) then g(x)
.
尝试将这种想法应用到您的锻炼中。
关于Scala 和编写 map 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19216958/