为什么更多主流的静态类型语言不支持返回类型的函数/方法重载?我想不出那样做.通过参数类型支持过载似乎没有那么有用或合理.怎么这么不受欢迎呢?
programming-languages overloading language-design function-calls
在Scala中,您可以通过使用共享公共名称但具有不同arities或不同参数类型的方法来重载方法.我想知道为什么这也没有扩展到方法的返回类型?请考虑以下代码:
class C {
def m: Int = 42
def m: String = "forty two"
}
val c = new C
val i: Int = C.m
val s: String = C.m
Run Code Online (Sandbox Code Playgroud)
有什么理由不适用吗?
谢谢,
文森特.
有两个函数具有相同的名称和相同的参数集,但具有不同的返回类型.为什么它不是多态的形式,即方法重载?为什么编译器不允许这样做?
我已经完成了这个演讲.
幻灯片编号:26引用
Java language does not allow overloading on return type
Java Virtual machine does allow overloading on return type
Run Code Online (Sandbox Code Playgroud)
这些陈述是真的吗?如果两个语句都为真,那么如何使代码可编译以便jvm运行代码?
我有一个关于这个主题的SE问题:
提前致谢.
我在Scala 2.10.2上尝试定义一个特征
trait Foo {
def bar(a:String): String
def bar(a:String): Int
}
Run Code Online (Sandbox Code Playgroud)
获得编译器错误method a is defined twice.什么是正确的语法?