5
例如,添加一个(以前未申报)int和伪代码字符串:是否有任何语言是动态输入的,但不允许输入错误?
x = 1;
y = "2";
x + y = z;
我见过的强类型语言中是不允许添加两种类型,但这些也静态类型的,所以它的不可能有像上面这样的情况。另一方面,我已经看到了弱类型的语言,允许上述和静态类型。
是否有任何语言是动态类型的,但也是强类型的,这样上面的代码将无效?
例如,添加一个(以前未申报)int和伪代码字符串:是否有任何语言是动态输入的,但不允许输入错误?
x = 1;
y = "2";
x + y = z;
我见过的强类型语言中是不允许添加两种类型,但这些也静态类型的,所以它的不可能有像上面这样的情况。另一方面,我已经看到了弱类型的语言,允许上述和静态类型。
是否有任何语言是动态类型的,但也是强类型的,这样上面的代码将无效?
好的:Python。
>>> a = 3
>>> b = "2"
>>> a+b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>> b = 2
>>> a+b
5
Ruby是动态类型的,但强类型。
irb(main):001:0> 2 + "3"
TypeError: String can't be coerced into Fixnum
from (irb):1:in `+'
from (irb):1
irb(main):002:0> "3" + 2
TypeError: can't convert Fixnum into String
from (irb):2:in `+'
from (irb):2
irb(main):003:0> "3" + 2.to_s
=> "32"
irb(main):004:0> 2 + "3".to_i
=> 5
现在想知道是否有任何静态类型的语言,但支持弱类型作为本机功能;) – nawfal 2013-02-03 20:07:42