guga
юзают для работы с null
Ale
ага, короче Maybe из haskell
Ale
type Maybe a = Just a | Nothing
guga
ну я не силён в хаскеле 😁
guga
Ale
ну, если null воспринимать как Nothing, то type Optional<T> = T | null;
guga
ну и стандарный набор операций как в коллекции
Ale
там есть просто strictNullChecks
guga
+ orElse, orThorw
Alex
я вообще про опшнал оператор, как в свифте или котлине
guga
Nothing просто bottom type для всех типов
Ale
идея ж ts & flow, не эмитить ничего лишнего в рантайм
Ale
type A = { a?: number } - здесь поле a необязательное
Sergey
nullable типы в котлине удобнее ведь монад
Ale
в ts короткий синтаксис для T | null | undefined не добавили, а в flow есть ?T
Пантелеев
Здравствуйте! не надется яминутки поговорить об ООП?
Пантелеев
Короче есть три разных сущности (class CModel yii1) свойства которых(поисковые параметры) частично пересеаются. Я хочу написать гибкий и удобный расшияемый поиск. Пока думаю создать интерфейс SearchInterface его реаализовывать в каждом из классов поиска под конкретную сущность. Также как вариант думаю создать интерфейс SearchebleItemInterface и реализовать его в каждой из модели, чтобы поиску было удобнее работать с ними. На данный момент все реализовано для кжадой сущности в контроллере вызывающим метод модели формы сущности что не очень верно най мой взгляд, но удобно для работы с пользовательскими данными. Вобщем буду рад конструктивным идеям и предложениям, т.к пока в голове каша + ситуация усугублятеся тем что yii я не очень знаю(совсем)
🐴
Казалось бы при чем здесь ооп?
🐴
Опиши задачу без привязки к языку и фреймворку
Sergei
Sergei
Я сразу подумал про паттерн Visitor (GoF).
Пантелеев
есть похожие, но различающиеся сущности. К примеру СТО и МагазинЗапчастей. Под каждую сужность нужен свой раздел поиска. То есть каждый поисковой запрос нужно обработать и выбрать подходящие сущности. на даннымй момент весь код почти находится в контроллере, что не очень хорошо т.к идет дубляж кода, и в случае добалвения новых сущностей придется переписывать все.
по поводу причем тут ооп - хочу снизить дубляж кода, то есть по факту создать такой сервис, который принимал бы в параметры нужную сущность, и запрос пользователя и возвращал нужный набор данных. Ну и хотелоь быэто все раскидать в нужные сервисы "по красоте"
invariance
спрошу тут
invariance
Я правильно понимаю, что интерфейс нужен... Когда например есть сообщение от обычного юзера, а есть от админа. В целом они похожи, но в некоторых местах различаются. И пишется интерфейс, который основные составляющие сообщения описывает
invariance
Если это так, то непонятно различие между интерфейсом и абстрактным классом
invariance
@f3ath ну ты же по-любому знаешь
invariance
Тебе ответили чо-нибудь по теме?
invariance
а то чет все молчат
invariance
обиделись что ли
invariance
аа, так ты просто думал
invariance
😆
invariance
вот это поворот
Пантелеев
Пантелеев
отсутствие свойств
Пантелеев
ну и обязательность реализации
invariance
Ясно
invariance
Интересненько
invariance
Т.е. по сути создавать интерфейс для одного класса - не имеет смысла?
invariance
сложная тема эти интерфейсы
invariance
да читал
invariance
но проблема таких учебников в том, что там какие-то анрил примеры)
invariance
Ну ладно
invariance
я кстати тоже как раз читаю
invariance
но до этого еще не дошел)
invariance
Спасибо
Evgeniy
Evgeniy
типо задел на будующее, но мало вероятно и на практике почти никогда потом не используется
invariance
Тогда интересно, зачем нужен абстрактный класс
invariance
ну, в смысле, в С++ то понятно, там нет интерфейсов вроде
invariance
вместо них абстрактные классы
SarcasmIO
очень тонкая грань
Evgeniy
абстрактный класс нужен там где есть абстрактные методы
Evgeniy
или как базовый класс экземпляр который нельзя создать
invariance
интерфейс тоже нельзя создать)
Evgeniy
в интерфейсе может быть реализация
Evgeniy
(такое можно и в java сделать)
Evgeniy
но пока не смотрим на java :D
invariance
invariance
разве?
Evgeniy
ой в абстрактном классе
invariance
я кажется начинаю понимать
Evgeniy
в интерфейсе в java начиная с 8 версии можно фигарить код :D
Evgeniy
но в тексте выше я имел ввиду абстрактный класс
Evgeniy
просто думал о java и руки не то написали
Evgeniy
разница в том что в случае интерфейсов
Evgeniy
один класс может реализовывать несколько интерфейсов
Evgeniy
в случае с абстратными классами только один абстрактный класс (один родитель в наследование)
Evgeniy
ну опять же кроме C++ :D
invariance
ага
invariance
короче как обычный класс
invariance
можно обычные методы писать даже
Evgeniy
в абстрактном классе да
Evgeniy
можно даже в обычных методах вызывать абстрактные методы )
invariance
Наверное это для каких-то архисложных систем
Evgeniy
абстрактный класс ?
invariance
Потому что я пока не вижу, где это можно юзать
invariance
да