tl;dr Вкратце, в данной статье я создам трейт, позволящий даже в версиях PHP младше 5.6 (до версии 5.4) добиться от компилятора поведения, подобного любому статическому языку программирования. Причём трейт будет валидировать не только входные, но и выходные парамеры тоже. Так сказать, полное погружение в тайп-хинтинг.
Данный трейт вы сможете без проблем подключить и использовать в своих веб-приложениях.
Рубрика «полиморфизм» - 2
Тайп-хинтинг по всем канонам полиморфизма в старых версиях PHP
2017-05-24 в 10:39, admin, рубрики: php, ооп, полиморфизмRayon: параллелизм данных в Rust
2015-12-29 в 16:48, admin, рубрики: Rust, параллельное программирование, полиморфизм, Программирование, типобезорасность Последние пару недель я работал над обновление Rayon — моей экспериментальной библиотеки для параллелизма данных в Rust.
Я вполне доволен тем, как идёт разработка, так что я решил объяснить к чему я пришёл в блог посте.
Цель Rayon — сделать добавление параллелизма в последовательный код простым, так, чтобы любой цикл for
или итератор можно было бы заставить работать в несколько потоков. Например если у вас есть такая цепочка итераторов:
let total_price = stores.iter()
.map(|store| store.compute_price(&list))
.sum()
то вы можете сделать её работу параллельной просто поменяв обычный «последовательный итератор» на «параллельный итератор» из Rayon:
let total_price = stores.par_iter()
.map(|store| store.compute_price(&list))
.sum()
Генотипируем гиков: опыт полевой генетики
2015-06-16 в 11:46, admin, рубрики: DRD4, geekpicnic, Биотехнологии, гикпикник, днк, Здоровье гика, Научно-популярное, полиморфизм, пцр, метки: гикпикникУ нас было четыре центрифуги, тысяча пипеток Пастера, наборы реактивов, морозилка на минус двадцать, термоциклер, форезная камера и трансиллюминатор, который включался, только если нажать off. Единственное, что вызывало сомнения, — как мы будем делать ПЦР в полевых условиях, но мы знали, что рано или поздно мы попробуем и это.
Мы сделали это впервые на московском ГикПикнике 13-14 июня в парке Красная пресня. Расставили столы, рассадили волонтеров, наварили агарозного геля в микроволновке из нашего офиса (получались прекрасные брикеты прозрачного, как слеза младенца, холодца для электрофореза) и начали генотипирование. Хотелось показать всем, что генетика — это весело!
Сериализация C++ с полиморфизмом и прототипами
2014-12-08 в 16:13, admin, рубрики: c++, c++11, КодоБред, полиморфизм, Программирование, сериализацияУже достаточно давно заинтересовался темой сериализации, а если конкретно, то сериализацией объектов, хранящихся по указателю на базовый класс. Например, если мы хотим загружать интерфейс приложения из файла, то скорее всего нам придется заполнять полиморфными объектами контейнер по типу “std::vector<iWidget*>”. Возникает вопрос, как подобное реализовать. Этим я недавно решил заняться и вот что получилось.
Для начала я предположил, что нам все-таки придется унаследовать в базовом классе интерфейс iSerializable, такого вида:
class iSerializable
{
public:
virtual void serialize (Node node) = 0;
};
Выразительный JavaScript: Тайная жизнь объектов
2014-10-27 в 8:53, admin, рубрики: javascript, инкапсуляция, наследование, объекты, полиморфизм, Программирование, форматирование таблицСодержание
- Введение
- Величины, типы и операторы
- Структура программ
- Функции
- Структуры данных: объекты и массивы
- Функции высшего порядка
- Тайная жизнь объектов
- Проект: электронная жизнь
- Обработка ошибок
- Регулярные выражения
- Модули
- Проект: язык программирования
- JavaScript и браузер
- Document Object Model
- Обработка событий
- Проект: игра-платформер
- Рисуем на Canvas
- HTTP
- Формы и поля ввода
- Проект: Paint
- Node.js
- Проект: веб-сайт по обмену умениями
- Песочница для кода
Проблема объектно-ориентированных языков в том, что они тащат с собой всё своё неявное окружение. Вам нужен был банан – а вы получаете гориллу с бананом, и целые джунгли впридачу.
Джо Армстронг, в интервью Coders at Work
Термин «объект» в программировании сильно перегружен значениями. В моей профессии объекты – стиль жизни, тема священных войн и любимое заклинание, не теряющий своей магической силы.
Стороннему человеку всё это непонятно. Начнём же с краткой истории объектов как концепции в программировании.
Читать полностью »
Правильно программируем. Используем полиморфизм. Общая логика игровых персонажей
2013-10-01 в 10:49, admin, рубрики: game development, Gamedev, unity, unity3d, ооп, полиморфизм, метки: 3d графика, game development, Gamedev, unity, unity3d, ооп, полиморфизмUnity3D. ИСПОЛЬЗУЕМ ПРЕИМУЩЕСТВА ООП. ПОЛИМОРФИЗМ
Доброго времени суток. В этом уроке мы рассмотрим несколько важных приемов программирования на движке Unity 3D. Думаю, статья поможет как начинающим, так и опытным игроделам.
Целью статьи ставлю осознание мощи и безграничной удобности использования всех прелестей ООП. В частности ПОЛИМОРФИЗМ. Кроме того затронем несколько других важных вопросов.
Так же немного поговорим о концепции создания собственных моторов, общей логике игровых персонажей и о методах взаимодействия их между собой и с окружающим миром. Мы поговорим, как сделать это просто и логично, легко редактируемо (модернизируемо). Как сделать так чтобы при добавлении новых элементов в игру, не приходилось переписывать (дополнять) уже написанное.
Думаю в будущем будет продолжение статьи. Там мы детально рассмотрим написание собственных Моторов, поговорим о векторах и о нужных нам операциях над ними, создадим полноценную модель инвентаря. Очень хорошего инвентаря, в который можно будет легко добавлять новые элементы без изменения старых.
Читать полностью »
Полиморфизм без виртуальных функций
2013-06-10 в 13:05, admin, рубрики: c++, CRTP, pattern, sfinae, virtual, ненормальное программирование, ооп, полиморфизм, метки: c++, CRTP, pattern, sfinae, virtual, ооп, полиморфизмВ этой статье представлен паттерн, который может быть использован для обеспечения динамического связывания без использования виртуальных функций для вызова перегруженных методов для объектов неоднородного контейнера при его обходе. Читать полностью »