我想问一下是否有人知道有动态类型的编程语言,但名称和类型之间的绑定是永久性的。静态类型保护您的代码不会将错误的值分配给变量,但会强制您在编译之前声明(并知道)该类型。动态类型允许您将具有不同类型的值一个接一个地分配给同一个变量。我的想法是,动态输入会很好,但是一旦绑定了变量,第一个绑定也会确定变量的类型。
例如,如果我误写的话,使用类似python的语法:
人= []
....
adam = Person(" adam")
人=亚当#(而不是人+ = [亚当])
然后我想得到一个错误(在运行时或在编译期间,如果可能的话)因为name被定义为列表,并且不能接受Person类型的值。
如果无法静态解析类型,则同样如此:
result = getData()
...
结果= 10
如果getData()没有返回整数,则会生成运行时错误。 我知道你可以用包装类破解类似的行为,但是默认情况下在语言中使用该选项会很好,因为我没有看到动态语言中这种灵活性的合法用法(继承除外,或者覆盖一个常见的默认值,例如null / None,可以作为特殊情况允许)。