在斯坦福斯卡拉当然,我已经遇到了以下任务:斯卡拉设置功能
练习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