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