#ruby #object #dynamic
#ruby #объект #динамический
Вопрос:
В некоторых языках (особенно динамически типизированных) все, даже значения, является объектом. Как в Ruby, вы можете сказать:
5.раз {сделай что-нибудь }
[ 5 — это объект, а не примитив, поэтому вы можете вызвать метод (раз) для него. ]
Есть ли у этой языковой функции имя?
Комментарии:
1. Чистый объектно-ориентированный язык, не так ли?
2. @delnan В большинстве языков (возьмем, к примеру, PHP) литеральные числа являются целыми числами. Они являются примитивами. Они не являются объектами типа Integer или что-то в этом роде, поэтому вы не можете сказать: 6.добавьте (5) и получите 11. Но в Scala вы можете сказать: 6. (5) и получить 11, который снова является объектом : (6. (5)).-(3) результат равен 8 [примерно «. ()» означает «.add ()» в Scala ]
3. @ashy_32bit: Я знаю. Я хотел предложить вам просто придерживаться этой фразы. Она хорошо узнаваема, относительно четко определена и описательна.
4. @delnan Ага, теперь это имеет смысл 🙂
Ответ №1:
Я думаю, что эта функция «Все является объектом» хорошо отображается на чистых / истинных объектно-ориентированных языках. Здесь возникает вопрос о JAVA, является ли это чистым языком OO или нет. Я не могу найти другое конкретное название «Все является объектом», поэтому я бы назвал это так.
Комментарии:
1. по-видимому, EiaO недостаточно для того, чтобы язык назывался чистым ООПЛ, но это действительно необходимо.
Ответ №2:
Я знаю, давайте придумаем условия
- Объектно-ориентированный язык OBL (Ruby …)
- Объектно-ориентированный язык OOL (Java …)
- Объектно-расширенный язык OXL (C , ObjectiveC …)
Что вы думаете? Добавьте язык в каждую категорию.
Ответ №3:
Язык программирования Ruby (в соавторстве с Matz) описывает Ruby как имеющую «очень чистую объектно-ориентированную модель программирования».
Обратите внимание, что в Ruby не каждая конструкция синтаксиса является объектом. Существуют ключевые слова и операторы, которые не являются ни объектами, ни методами для объектов. Я подозреваю, что у этой языковой функции нет глянцевого названия, потому что ни у одного языка нет этой функции.
Но если вы сузите свое определение всего до каждого значения… Ну, это другое. 🙂