Martin Odersky Scala编程公开课 第二周作业
这一周的主要内容是函数。函数是scala语言最重要的概念,既可以当作函数的参数,也可以作为返回值。函数还可以拥有多个参数列表。
因此,这次作业就是要把函数作为参数和返回值,实现set数据类型的一些方法。而set本身却是一个函数,这一点非常奇妙。另外测试程序也要自己实现。
编程过程中,发现有些函数实现的方法非常复杂,不知道是否有简化的方法。
作业要求如下: test("union contains all elements") { new TestSets { val s = union(s1, s2) assert(contains(s, 1), "Union 1") assert(contains(s, 2), "Union 2") assert(!contains(s, 3), "Union 3") } } test("union intersect diff"){ def a(x:Int)= x<20 def b(x:Int)= x>10 assert(contains(union(a,b), 55), "Union") assert(contains(union(a,b), 5), "Union") assert(contains(intersect(a,b), 15), "intersect") assert(!contains(diff(a,b), 15), "diff") assert(contains(diff(a,b), 5), "diff") } test("forall exists map"){ def a(x:Int)=x<10 assert(forall(a,x=>x*x>=0),"forall") assert(!forall(a,x=>x*x<60),"forall") assert(exists(a,x=>x*10==50),"exists") assert(!exists(a,x=>x*10==120),"exists") assert(contains(map(a,x=>x*x),64),"contains") assert(!contains(map(a,x=>x*x),640),"contains") }