
Nikita
21.12.2017
10:26:35

Oleg
21.12.2017
10:30:03

Oleksandr
21.12.2017
10:37:10

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

Google

Alexey
21.12.2017
10:41:01

Nikolay
21.12.2017
10:45:31

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]
Но будут разные типы

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
Дай минимальный воспроизводимый пример
Вот смотри. Я даю минимальный проект, ты получаешь это сообщение.
Потом понимаешь, что проблема вовсе не в этом сообщении, так как вопрос не про него.
Вопрос, как укзать тип, а не убрать это сообщение компилятора...

Michael
21.12.2017
12:21:48

Oleg
21.12.2017
12:21:59

Google

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

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
Альтернативой было бы не забывать полученный тип, или хотя бы в момент, когда ты его ещё помнишь сложить рядом с Any TypeTag
Короч, это не сишарп

Sergey
21.12.2017
12:28:13

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
П

Sergey
21.12.2017
12:32:06

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

Sergey
21.12.2017
12:37:21

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

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

Alexey
21.12.2017
12:39:25

Grigory
21.12.2017
12:39:29

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

Sergey
21.12.2017
12:39:35

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

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

Daniel
21.12.2017
12:41:20

Sergey
21.12.2017
12:41:21

Alexey
21.12.2017
12:41:24

Oleg
21.12.2017
12:41:44

Mikhail
21.12.2017
12:42:55

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, ты легко можешь сам написать узкоспециализированную реализацию

Sergey
21.12.2017
12:49:02

Grigory
21.12.2017
12:49:28
._.