Size: a a a

Scala User Group

2020 March 25

λ

λoλegΥch in Scala User Group
ну так одна а не две
источник

AV

Abyr Valg in Scala User Group
и вторая такая же
источник

VK

Victor Kalinin in Scala User Group
Λнтон Войцишевский
почему? Это же какие-то неявные тогда соглашения на уровне компилятора, а у нас тут типизация все дела
Ну потому что rte расширяет throwable. По идее rte есть throwable
источник

ΛВ

Λнтон Войцишевский in Scala User Group
Victor Kalinin
Ну потому что rte расширяет throwable. По идее rte есть throwable
для этого есть ковариация. Здесь у вас отношение "... есть ..." одностороннее. И такое поведение не всегда нужно
источник

VK

Victor Kalinin in Scala User Group
Λнтон Войцишевский
для этого есть ковариация. Здесь у вас отношение "... есть ..." одностороннее. И такое поведение не всегда нужно
Но я не понимаю, можно ли как-то эту ковариацию по простому применить в моем случае. Не указывая f=>f
источник

ΛВ

Λнтон Войцишевский in Scala User Group
кажется можно написать identity
источник

VK

Victor Kalinin in Scala User Group
Λнтон Войцишевский
кажется можно написать identity
В моем случае просто с Functionk.id не компилируется. Может свою надо написать
источник

VK

Victor Kalinin in Scala User Group
Ладно. Не важно. Я вижу что FunctionK.id тоже делает f=>f. Я надеялся что компилятор может понять что id - то же самое, без всяких ф-ций
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Victor Kalinin
Спасибо за ответы. Просто мне кажется компилятор должен знать что F[RuntimeException, _] может быть спокойно описан как F[Throwable, _], без особых действий
это знание компилятора не помогает строить инстансы трейтов с полиморфными методами
источник

Oℕ

Oleg ℕizhnik in Scala User Group
источник
2020 March 26

AS

Artem Sokolov in Scala User Group
Подскажите плс, а реализцию lazy val с synchronized блокировкой после 2.11 как-то кардинально решили?
источник

AS

Artem Sokolov in Scala User Group
а то я тут на проде столкнулся, и немного охерел
источник

λ

λoλegΥch in Scala User Group
там много чего меняли в каждом релизе
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Artem Sokolov
а то я тут на проде столкнулся, и немного охерел
а с чем столкнулся
источник

AS

Artem Sokolov in Scala User Group
Просто кажется кейс с которым я столкнулся - довольно типичный. При этом лезивал на нем ведет себя как лютый баг.
И то ли я чего-то не понимаю, то ли что.
Довольно часто у тебя есть объект который используется многопоточно, у тебя есть lazy val в одном из его методов. lazy val обычно делается ради того чтобы не вычислять дважды дорогое/долгое/нагруженное вычисление.

Далее под нагрузкой много потоков заходят в метод. И все утыкаются в lazy val по synchronized, тк он делает блокировку по this.
источник

Oℕ

Oleg ℕizhnik in Scala User Group
реф
источник

Oℕ

Oleg ℕizhnik in Scala User Group
и файбер
источник

AS

Artem Sokolov in Scala User Group
да это понятно
источник

Oℕ

Oleg ℕizhnik in Scala User Group
о да, поправили
источник

Oℕ

Oleg ℕizhnik in Scala User Group
в 2.12 там уже специальный монитор для каждого лейзи вала
источник