Является рубиновым сильно или со слабым контролем типов?

Нормальный массив в цикле for (стиль C):

char arr[5] = {'a', 'b', 'c', 'd', 'e'};    

for (int i = 0; i < (sizeof(arr)/sizeof(*arr)); i++) {
    std::cout << arr[i] << " ";
}
std::cout << std::endl;

Обратный массив в цикле for (стиль C):

for (int i = (sizeof(arr)/sizeof(*arr)) - 1; i >= 0; i--) {
    std::cout << arr[i] << " ";
}
std::cout << std::endl;
24
задан sunnyrjuneja 7 May 2013 в 04:19
поделиться

6 ответов

Ruby" силен введенный ".

Строгий контроль типов означает, что тип объекта (не в смысле ООП, а в общем смысле) проверяется, прежде чем операция, требующая определенного типа, выполняется на нем.

Слабый введенный означает, что никакая проверка не сделана, чтобы гарантировать, что операция может успешно выполниться на объекте. (Например, когда функциональные доступы строка как и массив плаваний, если никакая проверка типа не сделана затем, операция позволяется)

Редактирование: это были 6 лет, с тех пор как этот ответ был отправлен, и я думаю, что это гарантирует некоторые дополнительные разъяснения:

За эти годы понятие, что "безопасность типов является набором не абсолют", начало использоваться в пользу двоичного файла, означающего (да/нет)

, Ruby "более силен" введенный (с "er"), чем большинство типичных динамических языков. То, что рубин требует явных операторов для преобразования IE: Массив ("нечто"), "42" .to_i, Плавание (23), приближает набор ввода Ruby к "Сильному Введенному" концу спектра, чем "слабый введенный".

, Таким образом, я сказал бы "Ruby, более сильный введенный динамический язык, чем наиболее распространенные динамические языки"

44
ответ дан Pop Catalin 28 November 2019 в 22:12
поделиться

Wikpedia маркирует его как "динамичный ('утка') введенный".

Относительно комментария Поп об этом "сильно вводимый" - я не уверен, что его объяснение на самом деле соответствует тому, что продолжается под покрытиями. МРТ действительно "не проверяет", чтобы видеть, может ли операция быть выполнена на объекте; это просто отправляет объекту сообщение, и если тот объект не признает, что сообщение (или объявлением метода или путем обработки его в #method_missing) блюет. Если бы время выполнения на самом деле проверило, чтобы удостовериться, что операции были возможны, то #method_missing не работал бы.

кроме того, нужно отметить, что, так как все в Ruby - объект (и я действительно имею в виду все ), я не уверен, что он сказал о "не в oo-смысле", точно. В Ruby Вы - или объект или сообщение.

28
ответ дан Mase 28 November 2019 в 22:12
поделиться

В то время как Вы можете входить в аргументы об определении тех, называют, я сказал бы:

Ruby динамично и со строгим контролем типов, в то время как JavaScript динамично и со слабым контролем типов.

12
ответ дан cg. 28 November 2019 в 22:12
поделиться

По моему скромному мнению, Ruby сильно, но с динамическим контролем типов.

8
ответ дан Rao 28 November 2019 в 22:12
поделиться

Упрощенный ответ - то, что и рубин и JavaScript со слабым контролем типов.

Однако этот вопрос не совсем так ясен, как это может казаться - см. эта статья Википедии для более всестороннего обсуждения различия между сильно и языки со слабым контролем типов.

-1
ответ дан Andrew Hare 28 November 2019 в 22:12
поделиться

Я рассмотрел бы эти языки , утка ввела .

3
ответ дан JPrescottSanders 28 November 2019 в 22:12
поделиться
Другие вопросы по тегам:

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