我有类型 Set = Int => Boolean; , 和函数子集/如何获得两组 A 和 B 并比较它们?
我像这样写
def union(a: Set, b: Set): Set = {
(i: Int) => a(i).&(b(i))==b(i)
}
编译成功,但是<function1>
当我运行代码时它显示在输出中。
我有类型 Set = Int => Boolean; , 和函数子集/如何获得两组 A 和 B 并比较它们?
我像这样写
def union(a: Set, b: Set): Set = {
(i: Int) => a(i).&(b(i))==b(i)
}
编译成功,但是<function1>
当我运行代码时它显示在输出中。
我猜你正在做一些练习,可能来自 Odersky 教授的 Coursera 课程“Scala 中的函数式编程原理”。如果不是,您不应该重新定义内置名称,例如Set
.
无论如何,为了回答您的问题,选择将“一组整数”表示为一个函数,true
如果Int
提供给它的函数是该集合的成员,则您的集合是一个函数(一个Int
返回 a 的参数Boolean
)。
Scala 在将函数编译为 JVM 字节码时不会记录任何源代码,因此它无法String
以任何有意义的方式生成表示该函数的方法,而是仅生成<functionN>
其中N是函数的数量(参数数量)的地方。
我可以推断你Set
不是一个类,但它是一个类型别名Int=>Boolean.
由于=>
是 的语法糖FunctionN
,Set
是 的类型别名Function1[Int,Boolean]