1

我有类型 Set = Int => Boolean; , 和函数子集/如何获得两组 A 和 B 并比较它们?
我像这样写

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

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

4

2 回答 2

4

我猜你正在做一些练习,可能来自 Odersky 教授的 Coursera 课程“Scala 中的函数式编程原理”。如果不是,您不应该重新定义内置名称,例如Set.

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

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

于 2013-02-11T15:03:46.183 回答
0

我可以推断你Set不是一个类,但它是一个类型别名Int=>Boolean.

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

于 2013-02-11T14:25:47.057 回答