2010-03-26 43 views
5

例如,添加一個(以前未申報)int和僞代碼字符串:是否有任何語言是動態輸入的,但不允許輸入錯誤?

x = 1; 
y = "2"; 
x + y = z; 

我見過的強類型語言中是不允許添加兩種類型,但這些也靜態類型的,所以它的不可能有像上面這樣的情況。另一方面,我已經看到了弱類型的語言,允許上述和靜態類型。

是否有任何語言是動態類型的,但也是強類型的,這樣上面的代碼將無效?

+0

現在想知道是否有任何靜態類型的語言,但支持弱類型作爲本機功能;) – nawfal 2013-02-03 20:07:42

回答

12

好的: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 
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 
相關問題