我是一个经验丰富的爱好程序员,我对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:我不是在寻找鸭子打字.我正在寻找具有推断的严格类型语言.
在红宝石2.4中:
x = ['a']
y = {}
x[0] = y[x[0]] = y.fetch(x[0], y.length)
puts y #=> {"a"=>0}
Run Code Online (Sandbox Code Playgroud)
在python 3.5中:
x = ['a']
y = {}
x[0] = y[x[0]] = y.get(x[0], len(y))
print(y) #=> {0: 0}
Run Code Online (Sandbox Code Playgroud)
为什么这个?
ETA:
y[x[0]] = x[0] = y.get(x[0], len(y))
Run Code Online (Sandbox Code Playgroud)
产生预期的行为(这让我很懊恼.)