【问题标题】:Why do Scala function types conform to the FunctionN traits?为什么 Scala 函数类型符合 Function 特征?
【发布时间】:2017-01-17 20:22:07
【问题描述】:

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

我想确保我正确理解了here 的答案,但遗憾的是没有足够的声誉点来评论现有的答案。

【问题讨论】:

标签: scala


【解决方案1】:

FunctionN 特征的用途是什么?

它们的作用与大多数特征的作用相同,即创建结构并提供对具体实现的通用抽象。 FunctionN 在你使用anonymous function syntax 时被底层编译器使用,并通过它的apply 方法提供实现。

它们的存在是为了让编译器知道如何将函数视为第一类值

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

当一个函数接受另一个函数作为参数时,编译器需要 FunctionN 来进行类型检查?

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

【讨论】:

  • "它们是类型系统表达匿名函数的底层实现,它们是类型系统中的第一类值。" --> 这以更清晰的方式表达了我试图验证的内容。谢谢。
【解决方案2】:

为什么 Scala 函数类型 符合 FunctionN 特征?

为了简化类型系统:有什么替代方案?将函数类型添加到类型系统。但是,如果你只需要一个简单的多态名义特征就能解决问题,为什么还要在类型系统中添加函数类型,而 Scala 已经有了这个特征。

你需要一些函数类型。您可以添加函数类型,也可以使用已有的:通用特征。 Scala 的主要目标之一是简单。

【讨论】:

    猜你喜欢
    • 2012-07-10
    • 1970-01-01
    • 2016-04-14
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多