scala - 为什么 Scala 不允许在函数类型定义中使用参数名称?

标签 scala

Scala 不允许这样说:

def m(f:(numer:Double,denom:Double)=>tan:Double) = {...}

就像用类型注释变量意味着变量至少有一些文档一样,允许函数类型定义中的变量提供一些文档。由于它是可选的,程序员将决定何时执行它。但以上内容肯定比:

def m(f:(Double,Double)=>Double) = {...}

这种增加的灵 active 会破坏语言语法吗?

最佳答案

解决方法可以在使用类型别名中找到。

type Numer = Double
type Denom = Double
type Tan   = Double
def m(f:(Numer,Denom)=>Tan) = {...}

以您的方式使用语法会带来问题和歧义——例如编译器会检查目标函数是否具有完全相同的变量名称? (想一想会绊倒您提议的功能的用户)

关于scala - 为什么 Scala 不允许在函数类型定义中使用参数名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20403581/

相关文章:

java - Scala:需要 "explicit return"吗?

c++ - Scala 相当于函数中的 C++ 静态变量

scala - 在scala中,如何指示编译器实现两个抽象类型的等价?

scala - Spark : Calculate event end time on 30-minute intervals based on start time and duration values in previous rows

scala - 无法导入带有 Scala 类 Connection* 的 HBase

java - 为什么我不能从 Scala 访问在实现 Java 接口(interface)的类中声明的变量?

java - Javascript 更新后获取更改后的 HTML 内容? (html单元)

scala - Akka : the proper use of `ask` pattern?

Scala 可变集合,插入时排序

scala - Apache Spark RDD 拆分 "|"