Есть ли какие-либо языки, которые с динамическим контролем типов, но не позволяют слабый контроль типов?

Например, добавляя (ранее необъявленный) интервал и строка в псевдокоде:

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

Я видел языки со строгим контролем типов, которые не позволили бы добавлять два типа, но это также со статическим контролем типов, таким образом, невозможно иметь ситуацию как вышеупомянутый. С другой стороны, я видел языки со слабым контролем типов, которые позволяют вышеупомянутое и со статическим контролем типов.

Есть ли какие-либо языки, которые с динамическим контролем типов, но также со строгим контролем типов также, так, чтобы часть кода выше не была бы допустима?

5
задан Maulrus 26 March 2010 в 03:24
поделиться

2 ответа

Конечно: 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
12
ответ дан 18 December 2019 в 09:48
поделиться

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
5
ответ дан 18 December 2019 в 09:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: