The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск Python-библиотеки для научных вычислений NumPy 1.25.0..."
Отправлено Аноним, 19-Июн-23 01:40 
Просто вы не понимаете что такое полиморфизм у Julia. В отличии от C++, у которого полиморфизм возможнен только через таблицу виртуальных функций и не может быть никак изменён после компиляции (средствами языка, естественно, а не перезаписью адресов виртальных таблиц).

Джулийный полиморфизм заключается в том, что выбран будет тот метод из существующих в данный момент, типы атрибутов которого наиболее близки к типа вызова.

Например объявленная f(x, y) = x * y означает типы Any. И будет вызван именно этот метод функции f при любых аргументах. Что f(1, 2), что f("a", "b"). В последнем случае будет выполнена конкатенация. Но я могу объявить f(x::Number, x::Number) = x / 2, тогда f(1, 2) однозначно пойдёт в этот метод. А могу спуститься по дереву абстрактных типов и определить ещё конкретнее - f(x::Integer, y::Integer) = x / y + 1, что определит путь вызова исключительно для целых. Могу ещё больше детализировать под конкретный тип Int64, Int32 и пр. А могу определить его для другой ветви Number, например на комплексные. И у меня получается функция f с кучей методов, имеющих ровно два аргумента, но разных типов. И во время исполнения я могу определить новый метод f (например подгрузил пакет) или удалить существующий (по факту не требовалось). Пример привёл под стандартные типы, но ветку типов можно сделать свою, определяя номые методы f именно под свой тип.

А вот про C++, полагаю, что имеете в виду вовсе не полиморфизм, а выбор метода по сигнатуре с разным количеством аргмунетов. Впрочем, множественной диспетчеризацией, а не полиморфизмом в Julia они назвали это, скорее всего, из-за общности вызова. Им всё равно это полиморфизм на новом типе или подбор сигнатуры под новый набор аргументов.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру