Является ли рубин сильно или слабо типизированным?Рубин сильно или слабо типизирован?
Предположительно то же самое верно для Javascript.
Является ли рубин сильно или слабо типизированным?Рубин сильно или слабо типизирован?
Предположительно то же самое верно для Javascript.
Ruby is «strong typed».
Сильная типизация означает, что тип объекта (но не в смысле ООП, но в общем смысле) проверяется перед выполнением операции, требующей выполнения определенного типа.
Слабая типизация означает, что проверка не выполняется, чтобы гарантировать, что операция может быть успешной на объекте. (Например, когда функция обращается к строке типа и массиву поплавков, если проверка типа не выполняется, операция разрешена)
Редактировать: Прошло 6 лет с момента опубликования этого ответа, и я думаю, что это оправдывает некоторые дополнительные разъяснения:
на протяжении многих лет понятия, что «безопасность типа коммутируемая не является абсолютным» не начали использоваться в пользу двоичного значения (да/нет)
Рубин «сильнее» напечатали (с «er»), чем большинство типичных динамических языков. Тот факт, что Ruby требует явных инструкций для преобразования IE: Array («foo»), «42» .to_i, Float (23), приближает набор символов Ruby к концу спектра «Strong Typed», чем «слабый типизированный», ,
Так что я бы сказал, «Рубин сильнее напечатал динамический язык, чем большинство обычных динамических языков»
Благодарим вас за разъяснение. Помогал. :). 1 для вас. – Chirantan
Статическая типизация * не * подразумевает сильную печать. Например, C статически типизирован, потому что компилятор знает тип каждой переменной, но он не сильно типизирован, потому что память - это просто память и может быть обработана любым способом. – yfeldblum
@ Justice, я думаю, у вас есть точка ... –
Более упрощенный ответ заключается в том, что как рубин, так и javascript слабо типизированы.
Однако этот вопрос не совсем ясен, как может показаться - см. this wikipedia article для более углубленного обсуждения разницы между сильно и слабо типизированными языками.
Кажется, противоречит: http://www.rubyfleebie.com/ruby-is-dynamically-and-strongly-typed/ страньше и страньше ? – weepy
Я бы рассмотрел эти языки duck typed.
IMHO Ruby сильно, но динамически типизирован.
В то время как вы можете попасть в рассуждение о определении того термина я бы сказал:
Рубина динамически и сильно типизированный в то время как JavaScript динамически и слабо типизированный.
Wikpedia этикетки как «динамический („утка“) напечатал».
Относительно комментария Поп о том, что он был «сильным» - я не уверен, что его объяснение действительно соответствует тому, что происходит под обложками. MRI не действительно «проверяет», чтобы увидеть, можно ли выполнить операцию над объектом; он просто отправляет объекту сообщение, и если этот объект не принимает это сообщение (либо по объявлению метода, либо путем обработки его в #method_missing), он запустит barfs. Если время выполнения фактически проверено, чтобы убедиться, что операции возможны, #method_missing не будет работать.
Кроме того, следует отметить, что, поскольку все в Ruby является объектом (и я имею в виду все), я не уверен, что он сказал о «не в оо-смысле». В Ruby вы либо объект, либо сообщение.
Это на самом деле правильный ответ – andy
Почему вы думаете, что они были бы такими же - потому что разработчики Rails используют как Ruby, так и Javascript? –