Kar*_*sen 5 c# java type-inference d interface
我是一个经验丰富的爱好程序员,我对C++,D,Java,C#和其他人非常熟悉.
除了Go之外,几乎所有语言都要求我明确声明我正在实现一个接口.这是边缘荒谬的,因为我们今天拥有像Haskell这样的语言的编译器,它几乎可以用很少的提示进行全程序类型的推断.
我正在寻找的是一种编程语言:
interface ITest {
void Test();
}
class Test {
void Test() { }
}
void main() {
ITest x;
x = new Test;
}
Run Code Online (Sandbox Code Playgroud)
哪些语言会看到这个,并自动标记Test为实现ITest?
ETA:我不是在寻找鸭子打字.我正在寻找具有推断的严格类型语言.
yaz*_*yaz 12
D wrap在其标准库Phobos中有一些东西可以做你正在寻找的东西.这是从函数unittest复制的示例:
interface A {
int run();
}
interface B {
int stop();
@property int status();
}
class X {
int run() {
return 1;
}
int stop() {
return 2;
}
@property int status() {
return 3;
}
}
auto x = new X();
auto ab = x.wrap!(A, B);
A a = ab;
B b = ab;
assert(a.run() == 1);
assert(b.stop() == 2);
assert(b.status == 3);
Run Code Online (Sandbox Code Playgroud)
这项工作将从v2.064开始提供,它已经在git HEAD上了.