在斯坦福斯卡拉當然,我已經遇到了以下任務:斯卡拉設置功能
練習1 - 設置爲功能:
在這個練習中,我們將代表從INTS到布爾臺的功能:
type Set = Int => Boolean
一個)寫功能的「設置」接受一個int參數,並返回包含該詮釋一個集。
b)編寫一個函數「contains」,它將Set和Int作爲參數,如果Int在Set中則返回true,否則返回false。
c)編寫函數「union」,「intersect」和「minus」,它們以兩個集合作爲參數並返回一個Set。
d)你能寫一個函數「子集」,它將兩個集作爲參數,並返回true,如果第一個是第二個子集,否則返回false?
解一個,b和ç是相當簡單:
def set(i: Int): Set = n => n == i
def contains(s: Set, i: Int) = s(i)
def union(a: Set, b: Set): Set = i => a(i) || b(i)
def intersect(a: Set, b: Set): Set = i => a(i) && b(i)
def minus(a: Set, b: Set): Set = i => a(i) && !b(i)
但是是有d任何優雅的解決方案? 當然,嚴格來說,答案d是「是」,我可以寫的東西,如:
def subset(a: Set, b: Set) = Int.MinValue to Int.MaxValue filter(a) forall(b)
但這可能是不正確的做法。
我認爲*爲*正道。 – Malvolio
該課程與斯坦福大學沒有任何關係 –
@Seth從斯坦福大學的課程中,不是當前Coursera的課程,即使第二個任務幾乎相同。請注意,它沒有綁定/綁定提示,這btw回答了我的問題。 – Grozz