@scala_ru

Страница 1479 из 1499
Vadim
22.05.2018
09:11:33
я с лихоя увидел оригинал

Nikolay
22.05.2018
09:12:38
Я про последний пост. Оригинальный proposal немного странный

Юрий
22.05.2018
09:17:06
последний вариант прям топчик

Vadim
22.05.2018
09:17:15
по мне так шило на мыло

Google
Vadim
22.05.2018
09:17:23
а то что лихой предлагает я хз зачем вообще

λoλcat
22.05.2018
11:21:11
Мне тоже понравился вариант лихоя, но пока не попробуешь на это переписать что-нибудь жирное, минусы не вскроются

Я ток не понял, вот эту поплаву .explicitly(a) уже окончательно затащили в доттю?

Ее еще давно мартин показывал в презенташках

Но сейчас это ставится под вопрос

Р
22.05.2018
11:28:33
Я бы ещё революционную штуку сделал. Вот это вариант бы не включал: def f(a: Int, implicit b: Int = -1, implicit c: Int = -1) Defaults + implicits - это мегаопасная вещь, которая стреляет в ногу даже тем кто не догадывается о её существовании. Самый кайф - это сделать не тот тип в implict val и получить type safety на уровне JavaScript :D

Oleg
22.05.2018
11:36:56
Ок понял

А что про тайп-сэйфти?

Google
Vadim
22.05.2018
11:39:11
да эт риальне кал - эдинственное что типа "улучшается" это инфер обычных параметров на базе имплиситов - но я чет сомневаюсь, что муть с explicitly явно лучше чем вывести функцию и объект и дальше зааплаить остальные параметры

чем вернуть*

Oleg
22.05.2018
11:41:09
ну давайти дизлайки на комменте ставить

Vadim
22.05.2018
11:42:57
а лихаевский вариант это добро пожаловать - теперь еще поганее можно творить говнодизайн аля экзекушен контестов и таймауйтов

да надо собраться и тож простыню накатать

Р
22.05.2018
11:48:01
Какая-то фигня. В шкал нельзя в один параметр лист кидат имплиситы и не имплиситы. И как дефолт вэлью для имплиситов ломает тайп сэфти тоже непонятно
Вот так ломает: Сначала определяете типа такого: def superMethod(param: String)(implicit context: Context = DefaultContext) = ... Потом где-то используете вот так: implicit val context = service.context superMethod("blablabla") Потом, когда в рантайме всё разваливается обнаруживаете что service.context возвращает, например, Option[Context] или OtherContext :)

Р
22.05.2018
12:03:47
Понял, логично.
В жизни я видел эту проблему в использовании ExceptionHandler в Akka HTTP. Там его можно имплицитно подключать и, конечно, по закону Мерфи его имеено так и подключают, а потом никак не могут понять почему он версию по-умолчанию в лайве берёт.

Р
22.05.2018
12:24:30
однако с тайпсефти тут все в порядке. стринги в стрингах и все остальное тоже на местах. рыбы по полю не гуляют, жабы по небу не летают.
Смотря как определять тайп сейфити. Я же не сказал что type safety отсутсвует, а то что он становится на уровне JavaScript'a. Там тоже рыбы не летают по небу. Ну тут уже риторика начинается и философия немножко. Спорить не стану. Я понимаю о чём вы и принимаю претензию. Можно смотреть на это как то что вы сложить пытались в Context вместо того что нужно Option[Context] или OtherContext, а вам вместо того чтобы не дать это сделать на этапе компиляции, или хотя бы в runtime ошибку выдать, операцию молча проигнорировали.

Mikhail
22.05.2018
12:33:13
Смотря как определять тайп сейфити. Я же не сказал что type safety отсутсвует, а то что он становится на уровне JavaScript'a. Там тоже рыбы не летают по небу. Ну тут уже риторика начинается и философия немножко. Спорить не стану. Я понимаю о чём вы и принимаю претензию. Можно смотреть на это как то что вы сложить пытались в Context вместо того что нужно Option[Context] или OtherContext, а вам вместо того чтобы не дать это сделать на этапе компиляции, или хотя бы в runtime ошибку выдать, операцию молча проигнорировали.
Смотреть на это нужно как скала погромист просветленный - как оно есть, так и видеть. def chepuxa(value:Int = 5) - если ты определил дефолтное значение и потом вдруг по любым обстоятельствам не передал какое-то другое значение и получил на выходе не совсем то, что ожидал - то это исключительно твоя заслуга как погромиста. ты сам определил, что на безрыбье и рак рыба. скала тут не при чем, как не изворачивайся. у компилятора (по крайней мере у скала-компилятора точно, насколько мне известно) не стоит задачи писать программу и проводить семантический анализ за тебя. поэтому не надо сьезжать и подавать дурной пример юным джедаям. описать боль определенного паттерна - это хорошо, подменять понятия - плохо.

Oleg
22.05.2018
12:35:28
Ну я сам изредка натыкаюсь на неподтягивание вроде implicit Printer в AkkaHttpCirce На самом деле даже сам пару раз писал такую штуку. Особая проблема - что если имплиситы конфликтуют или там расходятся, такая же фигня - просто берёт дефолтный. Если здесь изменить поведение - было бы чуть лучше

Но в отдельных случаях дефолтные имплиситы - это чуть ли не единственный способ сохранить обратную совместимость

Р
22.05.2018
12:39:07
Но в отдельных случаях дефолтные имплиситы - это чуть ли не единственный способ сохранить обратную совместимость
Кстати, да. Может warning в компиляторе на это сделать? И почти все будут счастливы. Ну, кроме тех у кого стоит настройка делать из всех варнингов эрроры.

OlegYch
22.05.2018
12:43:47
дефолтных аргументов вообще лучше избегать

а с имплиситами это вообще бомба замедленного действия

OlegYch
22.05.2018
12:56:50
легко случайно забыть указать аргумент

https://github.com/wartremover/wartremover/issues/116

Google
Nick
22.05.2018
13:03:02
легко случайно забыть указать аргумент
ну ок, а указывать их миллион, особенно если они Option эт норм)

Евгений
22.05.2018
13:03:18
Пыха в чате по скале?

!бан

Oleksiy
22.05.2018
13:06:38
Хотелось бы пошуть на пыхе, но пыха - не шутки. (пишу на ней каждый день)

Alexey
22.05.2018
13:09:18
ну ок, а указывать их миллион, особенно если они Option эт норм)
Если их милион то возможно что то не так с дизайном

M
22.05.2018
13:39:01
кейк паттерн же

хотя струдом представляю акка как спринг

в какой роли ? секурити нету ресты акковые неочень , акка стрим против реактора в спринге 5 ?

Р
22.05.2018
13:40:59
А как можно акку вместио спинга использовать, если там дже DI нет ?
Там где в спринге использовался singleton bean, использовать actor :D DI вторично, как-нибудь прилепливают. Главное что Akka заиспользовали :)

Р
22.05.2018
13:42:43
Суть антипаттерна в том чтобы везде вместо простых классов акторы использовать.

Andrey
22.05.2018
13:42:48
Да вообще звучит как сектантские рассказы...

Если не использвать акторы как акторы, то как их использовать?

Р
22.05.2018
13:43:30
Как классы, только посылать сообщения вместо методов.

Andrey
22.05.2018
13:43:43
Так это и есть суть акторной системы вообще-то

Andrey
22.05.2018
13:43:43
Это ж идеальный ооп

:D

Admin
ERROR: S client not available

Google
Andrey
22.05.2018
13:43:54
а не все вот эти ваши инкапсуляции и полиморфизмы

M
22.05.2018
13:45:55
хранить состояние как statefull бины ejb ?

Andrey
22.05.2018
13:47:33
Тема достойная понва

Р
22.05.2018
13:47:56
Хранить состояние в акторе - это окей, ну если знаешь что делаешь, как минимум. Проблема в том что люди стейтлесс акторы делают вместо классов, а ещё бизнес логику туда пихают.

M
22.05.2018
13:49:25
чтобы выступал вместо jms в джаве просто слал сообщения :D

Andrey
22.05.2018
13:49:29
Звучит как "Они в джаве совсем осотонели, создают классы и пихают в них логику"

Alexandr
22.05.2018
13:51:00
Для чего нужен актор без логики? чтобы просто был?
Для того же, для чего и контроллер без логики - чтобы быть входной точкой. Необязательно же всю обработку делать прямо в акторе

Р
22.05.2018
13:51:14
Для чего нужен актор без логики? чтобы просто был?
Бизнес логика должна быть во внешних классах с симпатичными юнит тестами. В акторе должен быть самый минимум.

Alexandr
22.05.2018
13:54:07
Выдернуть параметры их хедеров и query string'a, вызвать с ними 1-2 метода класса и вернуть результат - вряд ли это бизнес-логика ?

Andrey
22.05.2018
13:54:48
Alexandr
22.05.2018
13:55:23
Ну, я думаю, до маразма не стоит доходить. Минимальная логика маршрутизации вызовов будет в любом случае

Р
22.05.2018
13:55:31
Выдернуть параметры их хедеров и query string'a, вызвать с ними 1-2 метода класса и вернуть результат - вряд ли это бизнес-логика ?
Я бы это в акторы тоже не стал пихать. В акторах только то что связано с многопоточностью и сохранением состояния. Нечего парсинг запросов на Akka завязывать.

Alexandr
22.05.2018
13:56:10
> Я бы это в акторы тоже не стал пихать. Я отвечал на вопрос про контроллеры

Andrey
22.05.2018
13:56:30
А то что часть кода не выносят из актора, так это чисто опыт. На нчальном этапе все так пишут, пока не поймут как код организовывть удобно. Никакой проблемы акки тут нет и тем более нет "как в спинге" ибо там тоже с опытом приходишь к более корретной организации кода, а поначалу "логика в контроллераз" )

Р
22.05.2018
13:57:51
Это довольно типичный паттерн. Люди писали на Спринге свои бинчики, потом узнали про Акку и решили что акторы - это замена бинам :D

Andrey
22.05.2018
14:00:00
Да ну, опять откровения П о смысле жизни? Откуда взято "Обычно акку используют вместо спринга" ? я вот очень мало таких проектов видел. Логика разбиения кода на поверхности лежит, а в акку и скалу все таки большинство уже с опытом приходит

Google
Р
22.05.2018
14:01:35
/toxic

Aleksei
22.05.2018
14:26:52
т.е. народ тупо тыкает на токсик и потом удаляет сообщеньки? =)))

Grigory
22.05.2018
14:27:24
икутест

Wystan
22.05.2018
14:27:52
Парниша пытается

Henadz
22.05.2018
15:23:02
такой вопрос, есть у меня ворох файлов аля .class, причём для одного Скала класса создалась куча всяких $$anonfun$$ файлов. Есть ли какой-нить удобоворимый способ воссоздать из этих файлов скаловский или джавовский код?

Alexandr
22.05.2018
15:24:11
javap не выдаст java?

Страница 1479 из 1499