@scala_ru

Страница 1161 из 1499
Nikita
21.12.2017
10:26:35
а pricing узнали потом?
pricing индивидуально в зависимости от размера компании :)

Oleksandr
21.12.2017
10:37:10
no compiler neutrality
кстати, а чем там все закончилось? убрали NN, вот так просто, и все?

Александр
21.12.2017
10:39:17
http://docs.paralleluniverse.co/quasar/ трогал кто ? интереса ради не споров для

Google
Oleg
21.12.2017
10:47:22
Возможно, если торреборе продолжает писать с Eff, у них нет выбора

Nikita
21.12.2017
10:47:29
вас устроил?
конкретно в нашем проекте прироста не было, но в соседней команде были рады, даже пост написали https://jobs.zalando.com/tech/blog/achieving-3.2x-faster-scala-compile-time/

Oleg
21.12.2017
10:48:13
кек, я успел

Sergey
21.12.2017
11:59:57
Народ, а подскажите такой такой нубский момент. Есть внешняя система. Из нее прилетает Either[Exception, Any] Т.е. либо данные разных типов, либо ошибка. В обработчике соответственно dataFromService match { case Right(data) => case Left(error) => } В принципе все работает, но компилятор закономерно ругается на Any is unchecked since it is eliminated by erasure Вопрос такой, можно ли как-то указать обработчику тип получаемых данных Right(data) без ручного приведения типов через asInstanceOf ? что-то вроде def process[MyCustomType](dataFromService) или best practics тут опять матчить результат? data match { case d: MyCustomType => process(d) }

Dmitry
21.12.2017
12:00:50
classTag?

но лучше сделать adt если знаешь какие данные могут быть

Alexey
21.12.2017
12:01:33
Нужно больше кода, чтобы что сказать

я не вижу где вот это может тут вылезти is unchecked since it is eliminated by erasure

Sergey
21.12.2017
12:05:21
dataFromService match { case Right(data) => case Left(error) => } вот здесь и вылезает

когда хочу что-то сделать с data

Grigory
21.12.2017
12:05:47
обычно такая ошибка вылезает когда метчить не получается; больше кода набрось, что с data хочешь сделать?

Google
Sergey
21.12.2017
12:06:49
по идее не важнео что с data делать. главное что тип data неизвестен

в данном случае там приходит List[MyClass]

Но будут разные типы

обычно такая ошибка вылезает когда метчить не получается; больше кода набрось, что с data хочешь сделать?
dataFromService match { case Right(data) => case Left(error) => } здесь dataFromService имеет тип Either[Exception, Any] и как раз здесь ругается

Denis
21.12.2017
12:15:36
Видимо это не весь код

> scala Welcome to Scala 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_112). Type in expressions for evaluation. Or try :help. scala> val dataFromService: Either[Exception, Any] = Right("") dataFromService: Either[Exception,Any] = Right() scala> :pas // Entering paste mode (ctrl-D to finish) dataFromService match { case Right(data) => case Left(error) => } // Exiting paste mode, now interpreting. scala>

Grigory
21.12.2017
12:16:29
вот если dataFromService пришел как Any

Sergey
21.12.2017
12:17:13
Видимо это не весь код
Конечно. Зачем весь код? проблема то описана.

Oleg
21.12.2017
12:17:44
Решение тоже

Denis
21.12.2017
12:18:29
Дай минимальный воспроизводимый пример

Alexey
21.12.2017
12:19:14
Конечно. Зачем весь код? проблема то описана.
и ты получил решение в первом же ответе

Sergey
21.12.2017
12:20:17
Oleg
21.12.2017
12:21:02
Если есть внешняя систеам, полагаю, из неё не может прилелеть "Any", из неё прилетает какой-то набор байт, который превращается в один из известных системе типов. Поэтому первый вопрос о десериализации. Второй вопрос о том, насколько сложные типы и насколько досканально ты хочешь верифицировать. Есть shapeless.Typeable, который умеет делать deep check, но всё зависит от того, насколько ты можешь себе позволить такую проверку

Alexey
21.12.2017
12:21:08
classTag?

но лучше сделать adt если знаешь какие данные могут быть

Где решение?

Sergey
21.12.2017
12:21:25
Дай минимальный воспроизводимый пример
Вот смотри. Я даю минимальный проект, ты получаешь это сообщение. Потом понимаешь, что проблема вовсе не в этом сообщении, так как вопрос не про него. Вопрос, как укзать тип, а не убрать это сообщение компилятора...

Google
Michael
21.12.2017
12:22:29
понял. Ну в моем случае у меня будет скорее всего общий код, разным будет только описание зависимостей и sbt плагинов

Спасибо за ответ, Олег

Oleg
21.12.2017
12:22:42
lazy val common = project lazy val lib25 = project dependsOn common lazy val lib26 = project dependsOn common

Michael
21.12.2017
12:23:03
понял, спасибо

Oleg
21.12.2017
12:25:37
Да, все верно. Тип получается из Json. Но... неужели так важно из чего получается тип, который потом обрабатывается? Проблема то в другом.
Да, потому что именно в этот момент ты находишь в своей системе очень конкретный тип, соответствующий JSON, а потом "забываешь его" и спрашиваешь - можно ли вспомнить то, что забыто. Ответ - стирание типов принуждает тебя в любом случае сложнее заранее известного мономорфного класса пробегаться по всем кишкам твоего объекта. Это может быть автоматизированно при помощи упомянутого Typeable или своего кастомного typeclass

Альтернативой было бы не забывать полученный тип, или хотя бы в момент, когда ты его ещё помнишь сложить рядом с Any TypeTag

Короч, это не сишарп

Sergey
21.12.2017
12:28:13
Альтернативой было бы не забывать полученный тип, или хотя бы в момент, когда ты его ещё помнишь сложить рядом с Any TypeTag
Это общий метод сервиса, который получает на вход case class Request, на выходе выдает Either[Exception, Any] Чтобы не забывать, надо будет описывать все варианты запрос => ответ, а это несколько сотен вариантов....

Oleg
21.12.2017
12:29:29
В некоторых языках, стоящих в развитие своей системы типов чуть дальше Go есть одна волшебная фича

Sergey
21.12.2017
12:29:31
Сам обработчик знает какой тип он ждет... например Either[Exception, List[String]]

Oleg
21.12.2017
12:29:32
Называется...

Sergey
21.12.2017
12:30:35
барабанная дробь ))

Oleg
21.12.2017
12:31:03
Она так никогда и не утихнет

Но даю подсказку

Она дважды используется вот этом выражении Either[Exception, List[String]]

Denis
21.12.2017
12:31:59
П

Alexey
21.12.2017
12:32:19
Это троллинг или Олег любит писать много букав

Diemust
21.12.2017
12:32:24
П
и

Google
Oleg
21.12.2017
12:32:34
и
д

Denis
21.12.2017
12:32:51
Ой все

Sergey
21.12.2017
12:32:53
Это троллинг или Олег любит писать много букав
Да я понял... оставь надежду всяк сюда входящий... ((

Alexey
21.12.2017
12:33:11
д
о

Denis
21.12.2017
12:33:23
Пидохистоморфный препроморфизм

шах и мат гомофобы

Daniel
21.12.2017
12:33:52
Пидохистоморфный препроморфизм
с этими морфизмами придется еще погуглить, есть ли такой

но если гугл не знает, то не факт что его еще нет

Admin
ERROR: S client not available

Diemust
21.12.2017
12:34:22
если его написали, значит он уже есть

Denis
21.12.2017
12:34:27
Недавно был пост типа хватит брать любое слово и добавлять к нему суффикс -морфизм

Daniel
21.12.2017
12:35:02
и поэтому ты добавил "хистоморфный"?

Alexey
21.12.2017
12:35:32
Да я понял... оставь надежду всяк сюда входящий... ((
верный способ решения уже повторили два раза. нужно просто прочитать

Oleg
21.12.2017
12:37:54
Сергей, ну я очень старался, честно

Alexey
21.12.2017
12:37:56
classTag?

но лучше сделать adt если знаешь какие данные могут быть

Альтернативой было бы не забывать полученный тип, или хотя бы в момент, когда ты его ещё помнишь сложить рядом с Any TypeTag

Diemust
21.12.2017
12:37:57
а почему ты не можешь сделать с конкретными типами?

Sergey
21.12.2017
12:38:04
Google
Alexey
21.12.2017
12:38:24
Сергей, ну я очень старался, честно
может быть даже слишком :))

Sergey
21.12.2017
12:38:35
но лучше сделать adt если знаешь какие данные могут быть
Уже писал. Не вариант описывать ADT на все несколько сотен случаев.

Daniel
21.12.2017
12:39:09
возможно бага телеграмма вырезает на некторых клиентах сообщения со словом ClassTag

Alexey
21.12.2017
12:39:25
Уже писал. Не вариант описывать ADT на все несколько сотен случаев.
в скале его все равно придется описывать. иначе ты получишь просто java script

Daniel
21.12.2017
12:39:33
КлассТэг

Oleg
21.12.2017
12:39:55
Он просто игнорирует ответы, как в "westworld" - Посмотри, здесь Typeable, ClassTag, TypeTag. Что ты думаешь? - Это ни на что не похоже...

Mikhail
21.12.2017
12:40:16
Sergey
21.12.2017
12:40:29
возможно бага телеграмма вырезает на некторых клиентах сообщения со словом ClassTag
Или бага некоторых любдей, которые думают, что одно слово что-то решает, даже не узнав для чего оно))

Grigory
21.12.2017
12:40:52
не узнав для чего оно но всего лишь для всего

Sergey
21.12.2017
12:41:21
Он просто игнорирует ответы, как в "westworld" - Посмотри, здесь Typeable, ClassTag, TypeTag. Что ты думаешь? - Это ни на что не похоже...
ClassTag не решает ничего, так как в примере тип List[MyClass] оно не разрулит. Более тяжелые вещи вроде шейплеса тащить не хочется без крайней необходимости.

Alexey
21.12.2017
12:41:24
Oleg
21.12.2017
12:43:38
Классный эдит, тогда просто напиши себе send[T: Decoder](req: Request): Either[Throwable, T] вместо Either[Throwable, Any]

Alexey
21.12.2017
12:44:58
вообщем давай я резюмирую чем мы все смогли тебе помочь - если есть только Any, то уже ничем не помочь. нужно либо описать adt и передать adt вместо any, либо передать ClassTag, который будет в себе содержать информацию о классе. первый вариант предпочтительнее, потому что описывает твой домен, а не пользует информацию рантайма jvm для этого

Oleg
21.12.2017
12:47:32
Ради Typeable не нужно тащить shapeless, ты легко можешь сам написать узкоспециализированную реализацию

Grigory
21.12.2017
12:49:28
._.

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