@proelixir

Страница 38 из 1045
Stanislav
28.07.2016
15:13:22
да она не решает

Vladimir
28.07.2016
15:13:27
и вообще функции высших порядков решают

Dmitry
28.07.2016
15:13:39
Ну это как посмотреть.. Я пока ещё не разобрался

Композицию тогда уж, эм.

Google
Vadim
28.07.2016
15:13:46
"Всё, что решается наследованием, решается и композицией"

Stanislav
28.07.2016
15:13:48
тоесть передаем в конструктор десяточек лямдб ?

Vladimir
28.07.2016
15:13:56
> конструктор

Конструктор чего?

Stanislav
28.07.2016
15:14:02
что тебя смущает ?

Vladimir
28.07.2016
15:14:03
одну лямбду. а она генерит ещё девять.

Stanislav
28.07.2016
15:14:05
чего-то

Dmitry
28.07.2016
15:14:06
как бы да, только конструктора нету)

тоесть передаем в конструктор десяточек лямдб ?

Vadim
28.07.2016
15:14:10
Нету в элексире конструкторов

Поведение и данные отдельно

Stanislav
28.07.2016
15:14:36
тоесть когда вы создаёте процесс или что там было это нельзя назвать констурктором ?

Vadim
28.07.2016
15:14:44
Это функция прежде всего

Google
Vladimir
28.07.2016
15:15:08
В Elixir нет конструкторов.

Vadim
28.07.2016
15:15:25
Т.е. spawn_link это явно не конструктор

Но он создает процесс

Stanislav
28.07.2016
15:15:38
всё правильно. >to create an object.

Dmitry
28.07.2016
15:15:46
конструктор создаёт объект определённого класса. У этого объекта есть параметры и методы. Тут такого нету

Stanislav
28.07.2016
15:15:50
типы есть ? обьектов типов нет ?

Vadim
28.07.2016
15:16:04
Есть, но конструктор - это из ООП

Можно так же сказать тогда, что любая фабрика - конструктор

Но это не так

Stanislav
28.07.2016
15:16:26
конструктор создаёт объект определённого класса. У этого объекта есть параметры и методы. Тут такого нету
стейт у тебя в ген сервер не передаётся по кругу тот же самый рекурсией ?

Dmitry
28.07.2016
15:16:32
Объект подразумевает совмещение данных и операций над ними. Тут такого нету

Stanislav
28.07.2016
15:16:40
как нету ?

Dmitry
28.07.2016
15:16:57
мухи отдельно котлеты отдельно

Vadim
28.07.2016
15:16:58
Данные ОТДЕЛЬНО, поведение ОТДЕЛЬНО

Ты создаешь структуру с данными

И в !модуле! объявляешь функции для работы со структурой

Stanislav
28.07.2016
15:17:23
и пердолишь ей ген-сервер по кругу

ну фукнции и будут методами

просто это такой откат на двадцать лет назад когда надо руками связывать

Google
Vadim
28.07.2016
15:18:13
Нету в функциональщине методов

Это терминология ООП

Stanislav
28.07.2016
15:18:26
ок функции над данными

Dmitry
28.07.2016
15:18:41
Метод может быть у объекта. Если ты вызовешь один и тот же метод у разных объектов - получишь разное поведение.

Vadim
28.07.2016
15:19:11
просто это такой откат на двадцать лет назад когда надо руками связывать
Ну нет. Зачастую структура и функции в одном модуле

И разделение это исключительно хорошо

Dmitry
28.07.2016
15:19:28
У метода есть что то типа this. А тут такого нету. Считай все функции статические

Stanislav
28.07.2016
15:20:18
Ну нет. Зачастую структура и функции в одном модуле
правильно. и называется {module_name}_{method_name}. и первый агрумент это стейт. в сишке тоже это проходили и пришли к полноценным классам

Vadim
28.07.2016
15:20:34
Module.function(data)

Stanislav
28.07.2016
15:20:34
this это первый аргумент

Vadim
28.07.2016
15:20:40
Или data |> Module.function

Dmitry
28.07.2016
15:21:13
Отличие от сишки в том, что стейт у тебя иммутабельный. Нет смысла передавать this, потому что ты не можешь его изменить

правильно. и называется {module_name}_{method_name}. и первый агрумент это стейт. в сишке тоже это проходили и пришли к полноценным классам

Vadim
28.07.2016
15:21:23
Зато в ООП для этого костыли в виде методов расширения и fluent-синтаксиса

Stanislav
28.07.2016
15:22:04
но ваще-то я не про ооп в целом. меня волнует конкретно как в фп обходятся без наследвоания. ну тоесть это не тема для траления. это боль которую я ношу уже несколько лет

Vadim
28.07.2016
15:22:05
С пайпами можно сразу data |> Module.function1 |> Module.function2

Stanislav
28.07.2016
15:22:18
вот вы говорите композиция. окей

Vadim
28.07.2016
15:22:19
Композицией

Stanislav
28.07.2016
15:22:24
надо изучать

Vadim
28.07.2016
15:22:41
Конкретно в элексире это облегчается с помощью use

Google
Vladimir
28.07.2016
15:23:05
вот вы говорите композиция. окей
Ты там что-то про Go писал вроде?

Stanislav
28.07.2016
15:23:13
не

Vladimir
28.07.2016
15:23:14
надо изучать
Так вот, там композиция.

Vadim
28.07.2016
15:23:14
Там тоже композиция

Vladimir
28.07.2016
15:23:33
пацаны пацаны а вы конкурируете с гошечкой ?

Dmitry
28.07.2016
15:23:36
Есть ещё и полиморфизм - с помощью протоколов

Vadim
28.07.2016
15:23:42
И в питоне первый аргумент всегда self

Stanislav
28.07.2016
15:24:11
мне кажется это всё не то. тоесть Composition vs. Inheritance это конечно есть такой вид олимпиады но меня волнует наследование как уточнение под проект а не как делание из фигуры круга

Vadim
28.07.2016
15:24:44
Ну пример то приведи какой-нибудь

Dmitry
28.07.2016
15:24:58
Ты мыслишь объектно ориентированно

мне кажется это всё не то. тоесть Composition vs. Inheritance это конечно есть такой вид олимпиады но меня волнует наследование как уточнение под проект а не как делание из фигуры круга

Тут нету объектов, уточнять ничего не надо. Просто работаешь с данными и всё

Stanislav
28.07.2016
15:25:13
да. это моя слабость

ну а как же библиотечки

Vladimir
28.07.2016
15:25:31
Stanislav
28.07.2016
15:25:48
ну слабо конфигурируемо получается

Vadim
28.07.2016
15:25:54
Нормально там все

Если библиотека поддерживает конфигурацию, то эта конфигурация передается как данные в функции

Dmitry
28.07.2016
15:26:52
Ты думаешь: "есть крутая библиотека, но она слишком широка для моих задач. Когда такое попадается в сишке - я просто наследуюсь с уточнением - и всё работает. А тт наследования нету - беда"

Stanislav
28.07.2016
15:26:54
так вот короч. есть класс. вы его наследуете и доопределяете методы. которые например дают этому классу хендлер бд, описывают поведение в случае чего

Google
Vadim
28.07.2016
15:27:08
Просто берешь

И делаешь функцию

Для этой структуры

Stanislav
28.07.2016
15:27:26
и кто её будет вызывать ?

Dmitry
28.07.2016
15:27:42
Но тут то нету классов! Ты просто после обработки данных библиотекой пишешь функцию, которая ещё раз дообрабатывает их и всё!

Ты думаешь: "есть крутая библиотека, но она слишком широка для моих задач. Когда такое попадается в сишке - я просто наследуюсь с уточнением - и всё работает. А тт наследования нету - беда"

Vadim
28.07.2016
15:27:52
В таком случае передаешь функцию в какую-нибудь другую, которая определена в библиотека

Если библиотека это поддерживает

Stanislav
28.07.2016
15:28:29
ну получается лапша из колбеков

Dmitry
28.07.2016
15:28:34
тогда в библиотеке будет хуки, или это плохая библиотека

а если надо обработать между внутренними обработками ?

Vadim
28.07.2016
15:28:38
Или используешь низкоуровневые методы

Если либа поддерживает

Stanislav
28.07.2016
15:29:16
тогда в библиотеке будет хуки, или это плохая библиотека
окей, взять то что уже нахучил и сделать новое поведение вместе со старым не копипастя все старые хуки ?

Vadim
28.07.2016
15:29:38
ну получается лапша из колбеков
Лапши не будет, ты просто передаешь ссылку на функцию. Не обязательно делать анонимную инлайновую функцию

Dmitry
28.07.2016
15:29:40
тут же чуваки не тупые сидят - почти во всех либах всё высокоуровневое с применением ТВОИХ лямбд. А там пилишь что хочешь, и уточняешь что хочешь

тогда в библиотеке будет хуки, или это плохая библиотека

Stanislav
28.07.2016
15:30:15
ну звучит ок но надо конечно конкретно смотреть как че реализовали да

вроде от языка кверения бд вытекали глаза но это было давно

Vadim
28.07.2016
15:30:57
https://github.com/elixir-ecto/ecto

Страница 38 из 1045