2010-03-26 35 views
5

Ví dụ, thêm một (trước đây chưa được khai báo) int và một chuỗi trong mã giả:Có bất kỳ ngôn ngữ nào được nhập động nhưng không cho phép nhập sai?

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

Tôi đã nhìn thấy ngôn ngữ gõ mạnh mẽ rằng sẽ không cho phép thêm hai loại, nhưng những người cũng đang tĩnh đánh máy, do đó, nó không thể có một tình huống như trên. Mặt khác, tôi đã nhìn thấy các ngôn ngữ đánh máy yếu cho phép ở trên và được gõ tĩnh.

Có bất kỳ ngôn ngữ nào được nhập động hay không nhưng cũng được nhập mạnh, sao cho đoạn mã ở trên không hợp lệ?

+0

bây giờ tự hỏi là có bất kỳ ngôn ngữ nào được nhập tĩnh nhưng hỗ trợ gõ yếu là tính năng gốc;) – nawfal

Trả lời

12

Chắc chắn: 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 được nhập động, nhưng được nhập mạnh mẽ.

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 
Các vấn đề liên quan