如何编写函数来比较两组?

时间:2013-02-11 14:13:40

标签: scala

我有类型Set = Int =>布尔; ,和功能子集/如何获得两组A和B并比较它们? 我写的像

def union(a: Set, b: Set): Set = {
  (i: Int) => a(i).&(b(i))==b(i) 
  }

编译成功,但在我运行代码时,它会在输出中显示<function1>

2 个答案:

答案 0 :(得分:4)

我认为你正在进行一些练习,可能来自Odersky教授的Coursera课程“Scala中的功能编程原理”。如果没有,则不应重新定义内置名称,例如Set

无论如何,要回答你的问题,选择将“一组整数”表示为一个函数,如果提供给它的true是该集合的成员,则返回Int, set 一个函数(一个Int参数返回Boolean)。

Scala在将函数编译为JVM字节码时不记录任何源代码,因此它无法以任何有意义的方式生成表示该函数的String,而只生成<functionN>其中 N 是函数的arity(参数个数)。

答案 1 :(得分:0)

我可以扣除您的Set不是一个类,但它是Int=>Boolean.的类型别名

由于=>FunctionN的语法糖,SetFunction1[Int,Boolean]的类型别名