Scala不允许说:
def m(f:(numer:Double,denom:Double)=>tan:Double) = {...}
就像使用类型注释变量意味着变量至少具有一些文档一样,因此允许函数类型定义中的变量提供一些文档.由于它是可选的,程序员将决定何时这样做.但上述内容肯定比以下内容更具信息性:
def m(f:(Double,Double)=>Double) = {...}
这会增加灵活性会破坏语言语法吗?
可以在使用类型别名中找到解决方法.
type Numer = Double type Denom = Double type Tan = Double def m(f:(Numer,Denom)=>Tan) = {...}
在你的方式中使用语法会带来问题和歧义 - 例如,编译器会检查目标函数是否具有相同的变量名称?(想想会绊倒你提议的那个功能的用户)