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