换句话说,FunctionN trait 有什么用途?它们是否存在以使编译器知道如何将函数视为第一类值? IE。当一个函数接受另一个函数作为参数时,编译器是否需要 FunctionN 来进行类型检查?

我想确保我正确理解了答案 here,不幸的是没有足够的声望点来评论现有答案。

最佳答案



它们服务于大多数特征所做的相同目的,创建结构并提供对具体实现的通用抽象。 FunctionN 在您使用 anonymous function syntax 时由底层编译器使用,并通过它的 apply 方法提供实现。



同样,它们的存在是为了在 Scala 中为函数创建调用约定,因为就类型系统而言,方法没有值。它们是类型系统表达匿名函数的底层实现,匿名函数是类型系统中的第一类值。


FunctionN 是一种与任何其他类型一样的类型,其中类型检查像任何其他类型一样进行。需要注意的一件事是编译器实际上知道特征和底层实现,因为它必须将其用于函数值。

关于scala - 为什么Scala函数类型符合Function trait?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41706243/

10-15 08:44