
Alexey
18.01.2017
16:12:43
тс котлин напоминает, кстати
прям очень

Sergey
18.01.2017
16:13:04
еще swift кстати

Alexey
18.01.2017
16:14:00
в тс есть опшналы?

Google

Aleh
18.01.2017
16:18:01

guga
18.01.2017
16:20:26
юзают для работы с null

Aleh
18.01.2017
16:21:00
ага, короче Maybe из haskell
type Maybe a = Just a | Nothing

guga
18.01.2017
16:21:32
ну я не силён в хаскеле ?

Aleh
18.01.2017
16:22:45
ну, если null воспринимать как Nothing, то type Optional<T> = T | null;

guga
18.01.2017
16:22:49
ну и стандарный набор операций как в коллекции

Aleh
18.01.2017
16:22:53
там есть просто strictNullChecks

guga
18.01.2017
16:22:58
+ orElse, orThorw

Alexey
18.01.2017
16:23:21
я вообще про опшнал оператор, как в свифте или котлине

guga
18.01.2017
16:23:30
Nothing просто bottom type для всех типов

Google

Aleh
18.01.2017
16:23:31
идея ж ts & flow, не эмитить ничего лишнего в рантайм
type A = { a?: number } - здесь поле a необязательное

Sergey
18.01.2017
16:31:51
nullable типы в котлине удобнее ведь монад

Aleh
18.01.2017
16:32:42
в ts короткий синтаксис для T | null | undefined не добавили, а в flow есть ?T

Артур Евгеньевич
19.01.2017
19:22:55
Здравствуйте! не надется яминутки поговорить об ООП?
Короче есть три разных сущности (class CModel yii1) свойства которых(поисковые параметры) частично пересеаются. Я хочу написать гибкий и удобный расшияемый поиск. Пока думаю создать интерфейс SearchInterface его реаализовывать в каждом из классов поиска под конкретную сущность. Также как вариант думаю создать интерфейс SearchebleItemInterface и реализовать его в каждой из модели, чтобы поиску было удобнее работать с ними. На данный момент все реализовано для кжадой сущности в контроллере вызывающим метод модели формы сущности что не очень верно най мой взгляд, но удобно для работы с пользовательскими данными. Вобщем буду рад конструктивным идеям и предложениям, т.к пока в голове каша + ситуация усугублятеся тем что yii я не очень знаю(совсем)

da horsie
19.01.2017
19:24:11
Казалось бы при чем здесь ооп?
Опиши задачу без привязки к языку и фреймворку

Роман
19.01.2017
19:26:44
Наверное это "Я хочу написать гибкий и удобный расшияемый поиск.".

Sergei
19.01.2017
19:26:47

Артур Евгеньевич
19.01.2017
19:30:56
есть похожие, но различающиеся сущности. К примеру СТО и МагазинЗапчастей. Под каждую сужность нужен свой раздел поиска. То есть каждый поисковой запрос нужно обработать и выбрать подходящие сущности. на даннымй момент весь код почти находится в контроллере, что не очень хорошо т.к идет дубляж кода, и в случае добалвения новых сущностей придется переписывать все.
по поводу причем тут ооп - хочу снизить дубляж кода, то есть по факту создать такой сервис, который принимал бы в параметры нужную сущность, и запрос пользователя и возвращал нужный набор данных. Ну и хотелоь быэто все раскидать в нужные сервисы "по красоте"


F01134H
19.01.2017
19:38:07
спрошу тут
Я правильно понимаю, что интерфейс нужен... Когда например есть сообщение от обычного юзера, а есть от админа. В целом они похожи, но в некоторых местах различаются. И пишется интерфейс, который основные составляющие сообщения описывает
Если это так, то непонятно различие между интерфейсом и абстрактным классом
@f3ath ну ты же по-любому знаешь

Роман
19.01.2017
19:41:52

F01134H
19.01.2017
19:42:24
Тебе ответили чо-нибудь по теме?
а то чет все молчат
обиделись что ли

Google

Роман
19.01.2017
19:42:59
Ну, я не думаю что тут есть телепаты, способные читать мои мысли. ?
Спят все наверное.

F01134H
19.01.2017
19:43:12
аа, так ты просто думал
?
вот это поворот

Артур Евгеньевич
19.01.2017
19:43:31
отсутствие свойств

F01134H
19.01.2017
19:43:59

Артур Евгеньевич
19.01.2017
19:44:01
ну и обязательность реализации

F01134H
19.01.2017
19:44:10
Ясно
Интересненько
Т.е. по сути создавать интерфейс для одного класса - не имеет смысла?

F01134H
19.01.2017
19:48:51
сложная тема эти интерфейсы

Роман
19.01.2017
19:50:14

F01134H
19.01.2017
19:50:41
да читал
но проблема таких учебников в том, что там какие-то анрил примеры)

Артур Евгеньевич
19.01.2017
19:51:01

Роман
19.01.2017
19:51:08
Я как раз читаю, там вроде всё как надо.

F01134H
19.01.2017
19:51:15
Ну ладно
я кстати тоже как раз читаю

Google

F01134H
19.01.2017
19:51:23
но до этого еще не дошел)

Роман
19.01.2017
19:57:16

F01134H
19.01.2017
19:57:29
Спасибо

Evgeniy
19.01.2017
19:58:33
типо задел на будующее, но мало вероятно и на практике почти никогда потом не используется

F01134H
19.01.2017
20:06:11
Тогда интересно, зачем нужен абстрактный класс
ну, в смысле, в С++ то понятно, там нет интерфейсов вроде

Admin
ERROR: S client not available

F01134H
19.01.2017
20:06:35
вместо них абстрактные классы

f4rt~
19.01.2017
20:07:17
очень тонкая грань

Evgeniy
19.01.2017
20:07:42
абстрактный класс нужен там где есть абстрактные методы
или как базовый класс экземпляр который нельзя создать

F01134H
19.01.2017
20:08:37
интерфейс тоже нельзя создать)

Evgeniy
19.01.2017
20:08:57
в интерфейсе может быть реализация
(такое можно и в java сделать)
но пока не смотрим на java :D

F01134H
19.01.2017
20:09:29
разве?

Evgeniy
19.01.2017
20:09:41
ой в абстрактном классе

F01134H
19.01.2017
20:10:02
я кажется начинаю понимать

Google

Evgeniy
19.01.2017
20:10:05
в интерфейсе в java начиная с 8 версии можно фигарить код :D
но в тексте выше я имел ввиду абстрактный класс
просто думал о java и руки не то написали
разница в том что в случае интерфейсов
один класс может реализовывать несколько интерфейсов
в случае с абстратными классами только один абстрактный класс (один родитель в наследование)
ну опять же кроме C++ :D

F01134H
19.01.2017
20:11:41
ага
короче как обычный класс
можно обычные методы писать даже

Evgeniy
19.01.2017
20:12:19
в абстрактном классе да
можно даже в обычных методах вызывать абстрактные методы )

F01134H
19.01.2017
20:12:36
Наверное это для каких-то архисложных систем

Evgeniy
19.01.2017
20:12:43
абстрактный класс ?

F01134H
19.01.2017
20:12:47
Потому что я пока не вижу, где это можно юзать
да

Evgeniy
19.01.2017
20:13:00
неа
скорее interface более гибкий
и в более сложных ситуациях использовать его лучше