
Юрий
23.09.2016
09:29:50
с ними всё так

Alex
23.09.2016
09:29:58
Task.handleWith

Nick
23.09.2016
09:30:02
вы просто на акке сидите и шлете месаги)

Юрий
23.09.2016
09:30:35
я к тому, что уже есть какие-то стандартные эксепшоны и лучше юзать их

Google

Юрий
23.09.2016
09:30:49
то есть надо знать, что они вообще существуют

Nick
23.09.2016
09:31:00
угу, я вот всегда кидаю RuntimeException, зачем создавать своё)))))

Юрий
23.09.2016
09:31:17
ну да, нахер нам детализация, всё одно :)

Grigory
23.09.2016
09:31:20
ахахахахахахах

folex
23.09.2016
09:32:31
Единственная проблема эксепшнов — они рвут любую систему типов. Ну кроме тех, которые с эффектами, а их тащем-та нету если джавовую не считать.

Alexandr
23.09.2016
09:32:39

Юрий
23.09.2016
09:33:04
тонкости знать обычно не нужно имхо

folex
23.09.2016
09:33:20
Их нужно знать в критических ситуациях

Юрий
23.09.2016
09:33:31
с джава колллекциями ты вообще почти не будешь сталкиваться при работе со скалой

Alex
23.09.2016
09:33:44
мне кажется, если спрашивать, ответ всегда будет ближе к "да" :)

Diemust
23.09.2016
09:33:55
типа "или напишешь офигенный код на джава, или мы тебе голову отрежем"?

Alex
23.09.2016
09:34:05
а то что это получается, люди сидели годами зубрили эррейлисты, а тут ты такой раз и красивый

Nick
23.09.2016
09:34:14
в скале конкарент коллекции гуана кстати

Google

Nick
23.09.2016
09:34:22
приходится джавовые юзать

Alexandr
23.09.2016
09:37:03
То есть, например, программист уровня middle, который пишет только на scala, все равно должен знать java так же хорошо, как и middle-программист, который пишет только на java?

Юрий
23.09.2016
09:37:40
ну примерно так

Alexandr
23.09.2016
09:38:22
Прикольно)

Юрий
23.09.2016
09:38:28
кстати да, java.util.concurrent надо прям знать, она частенько может пригодиться

Alexandr
23.09.2016
09:39:24
Тогда все, перешедшие на scala с <любой не java язык>, идут лесом))

Борис
23.09.2016
09:39:51

Юрий
23.09.2016
09:41:00

Sovent
23.09.2016
09:44:45

Юрий
23.09.2016
09:45:29
ну так возьми play
и не парься с akka-http
если тебе комбайн нужен где всё есть и заводится быстро

Sovent
23.09.2016
09:46:34
а play с akka-акторами дружит?

Diemust
23.09.2016
09:46:42
плей на акторах

Alexandr
23.09.2016
09:46:48
Да

Nikolay
23.09.2016
11:38:23
и не парься с akka-http
меня парит в akka-http что я не могу скажем быстро в REPL потестить простейший HTTP запрос или роут какой-то. всегда все сводится к куче импортов
особенно когда нужно еще какой-то header добавить к запросу)

Aleksei
23.09.2016
11:41:14
есть же тесты
зачем репл

Dim
23.09.2016
11:41:36
Ага

Google

Nikolay
23.09.2016
11:41:45
какие тесты?
да само собой в тестах тоже есть
некоторые вещи нужно просто запустить, ценности в тестах они не имеют. это в java я помню что тесты были самым быстрым способом запустить какой-то код. а в scala есть REPL

Dim
23.09.2016
11:44:18
Мы вот живём со Scalatra на jetty и akka.

Daniel
23.09.2016
11:44:56
не очень представляю как можно вообще протестить роуты быстро в репле
все равно же надо пачку кода копипастить
worksheet не поможет?

Nikolay
23.09.2016
11:47:16
можно и worksheet, мне REPL больше нравится

Viacheslav
23.09.2016
13:21:56
Друзья есть вопрос: предположим у нас есть пачка option-ов мы можем сделать так:
for {
result1 <- option1
result2 <- option2
...
}...мы получим результат если все option содержат данные.
А есть ли такие красивые языковые инструменты чтобы:
1. выполнился мой код Только если все option пустые
2. какой-нибудь такой паттерн матчинг чтобы например если 3 первый option пустые то выполняется мой код
карочи я хочу паттерн матчинг по нескольким option если они пачкой удовлетворяют моему условию то выполняем код

Artem
23.09.2016
13:23:21
паттернматчить тьюпл+ из опшенов?

Nikolay
23.09.2016
13:24:36
(opt1 ++ opt2 ++ opt3).isEmpty

Lev
23.09.2016
13:25:16
чего только люди не сделают, чтобы if condition не использовать ?

Foo
23.09.2016
13:25:20
1. в конце дернуть getOrElse ??

Nikolay
23.09.2016
13:25:31
поскольку у нас Option тоже корнями в коллекции уходит, то можно из них Iterable[T] сделать и проверить размер

Lev
23.09.2016
13:28:07
и чтобы не оборачивать почём зря

Nikolay
23.09.2016
13:32:46

Viacheslav
23.09.2016
13:35:24
ну да, примерно так и думал, но всё равно как-то это всё бойлерплейтненько получается и неинтуитивно
ну ок, просто бойлерплейтно)

Grigory
23.09.2016
13:36:22
можешь заменить на коллект
(opt1 :: opt2 :: opt3 :: opt4 :: Nil) collect {
case None :: None :: None :: tail => "wow!"
}

Google

Nikolay
23.09.2016
13:36:40
?
дело привычки, честно слово
я прямо читаю и вижу что человек сказать хотел

Vladimir
23.09.2016
13:37:36
все еще лучше null-checkов :D

D
23.09.2016
13:40:29

Nikolay
23.09.2016
13:41:17
не совсем понял)

D
23.09.2016
13:41:43
далеко не всегда пачка фиксированного размера :)

Admin
ERROR: S client not available

Daniel
23.09.2016
13:43:28
Iterator(None, None, None).filterNot(_ == None).isEmpty

Nikolay
23.09.2016
13:43:42
ну так откуда эти option-ы берутся? в примере просто из переменных. если хочется более конкретный пример, то можно адаптировать

Lev
23.09.2016
13:43:55

Daniel
23.09.2016
13:44:16
о, нет!
я думал тут творческий кружок =(

Lev
23.09.2016
13:45:09
хотя, если это ради самовыражения… почему бы и нет
лишь бы не водка

Nikolay
23.09.2016
13:46:56
пф, тут еще решения с shapeless не было)
я думаю там можно что-то интересное изобразить
жаль что нет в чате человека, который бы shapeless продвигал
был бы тогда творческий кружок что надо

Denis
23.09.2016
13:50:15
что его продвигать ?

Google

Denis
23.09.2016
13:50:27
дело стоит тысячи слов
посмотреть на либы где используется и все понятно сразу )

Viacheslav
23.09.2016
13:50:48
в принципе с листом худо бедно ок получается, остается только в паттерн матчинг запихать условие - если все элементы не None

Denis
23.09.2016
13:51:03
а если сам не упарываешься по тайплевелу то и не нужно )

Nikolay
23.09.2016
13:51:39

Alexey
23.09.2016
13:52:43

Lev
23.09.2016
13:52:43

D
23.09.2016
13:52:45

Viacheslav
23.09.2016
13:53:06

Nikolay
23.09.2016
13:53:21
например так

Lev
23.09.2016
13:53:53
ога, только паттерн матчинг тут за уши притянут

Nikolay
23.09.2016
13:54:00
ну да)

Viacheslav
23.09.2016
13:54:11
дааа)

Nikolay
23.09.2016
13:54:18
хотели паттерн матчинг - получите сполна
это может быть один из case тем более

Viacheslav
23.09.2016
13:54:41
интересно в какой момент после таких фокусов придут по мою душу)

Lev
23.09.2016
13:54:51
l.forall(_.is/nonEmpty) — и читается, и работает. только послевкусие всё равно не пропадает

Nikolay
23.09.2016
13:54:54
через collect тоже самое получится