我正在使用Coursera的Scala教程。其中一個練習要求實現一個映射函數來設置類型,定義如下: type Set = Int => Boolean
。有人支持功能存根:變換一組--Scala Coursera練習
/**
* Returns a set transformed by applying `f` to each element of `s`.
*/
def map(s: Set, f: Int => Int): Set = ???
我認爲人們可以檢查元素是否是S,通過執行以下操作: (x: Int) => s(x)
。我所想的應該等同於任何一個集合的定義。因此,如果我們想對該集合應用變換,我們可以這樣做: (x: Int) => s(f(x))
。所以功能的定義是: def map(s: Set, f: Int => Int): Set = s(f(x))
。但是這給了我一些奇怪的設置,如果我試試它:
def map(s: Set, f: Int => Int): Set = (x: Int) => s(f(x))
def toStringH(s: Set): String = {
val xs = for (i <- -bound to bound if contains(s, i)) yield i
xs.mkString("{", ",", "}")
}
def printSet(s: Set) { println(toStringH(s)) }
val squaredSet = map((x: Int) => (x> -3 & x<3), (x:Int) => (x+1))
printSet(squaredSet)
所以我想知道我哪裏出錯了。謝謝。
我想我明白了。我最終可能會將f應用於原本不是s的元素。所以我必須檢查 –
這個公式也是不正確的,因爲它會告訴我轉換後的值是否在原始集合中。不是我想要的 –