Scala和编写地图功能

use*_*318 4 functional-programming scala

所以假设我有一个函数需要一个带定义的Set 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)) }
Run Code Online (Sandbox Code Playgroud)

哪个是不正确的,因为in f(s(i)),'s(i)'返回一个布尔值,因此无法应用于f它.问题是我如何访问Set的每个元素并f在其上应用它?

这个问题是Coursera的Scala功能编程课程的一部分.

maa*_*asg 5

本课程的目标是帮助您理解功能模型,在这种情况下,Set如何由函数表示(称为该集的charasteristic函数).

而不是最终的解决方案,这里提示如何解决这个问题:

给定f: Int => Boolean定义您的集合的特征函数 ,以及xInt,if f(x) == true,然后x属于集合.现在,如果你有一个g:Int=>Int 想要在集合上映射的函数,你想要的是将该函数应用于你知道属于集合的元素:if (f(x)) then g(x).

尝试将这种想法应用于锻炼.