Size: a a a

Scala User Group

2020 November 09

R

RAFIZ in Scala User Group
Andrey Mikhaylov
В примере используется typed актор. Соответственно Greet это тип сообщений, которые принимает ActorRef from. Я бы приложил ссылку на доку отличия typed от классических акторов, но ее бот почистит)
точно, понятно, спасибо
источник

PA

Pavel Ajtkulov in Scala User Group
а тут в коде внезано есть кусок spray-json (ответить почему и зачем не смогу), и он внезапно сериализует целые как вещественные с нулем (54 -> "54.0"). case class JsNumber(value: BigDecimal) extends JsValue  и def apply(n: Int) = new JsNumber(BigDecimal(n)) в кишках. Можно как-то дешево без вещественных, и чтоб не выкидывать spray?
источник

AM

Andrey Mikhaylov in Scala User Group
Pavel Ajtkulov
а тут в коде внезано есть кусок spray-json (ответить почему и зачем не смогу), и он внезапно сериализует целые как вещественные с нулем (54 -> "54.0"). case class JsNumber(value: BigDecimal) extends JsValue  и def apply(n: Int) = new JsNumber(BigDecimal(n)) в кишках. Можно как-то дешево без вещественных, и чтоб не выкидывать spray?
По-умолчанию спрей так не делает. может инт переопределен или какая-то очень древняя версия?
источник

AM

Andrey Mikhaylov in Scala User Group
источник

PA

Pavel Ajtkulov in Scala User Group
источник

PA

Pavel Ajtkulov in Scala User Group
да, подозрительно. Буду разбираться, но я просто в кастомном writer пишу в JsNumber()
источник

AM

Andrey Mikhaylov in Scala User Group
Но BigDecimal еще не значит, что в принте будет с точкой. Если посмотреть дальше - JsonPrinter https://github.com/spray/spray-json/blob/release/1.3.x/src/main/scala/spray/json/JsonPrinter.scala#L49, а String.valueOf(BigDecimal(2)) = "2"
источник

E

Elijah in Scala User Group
может кто-то подсказать, как имплементировать accessM?

https://scastie.scala-lang.org/738m1dx1SEycvIvMMymb7A
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
нужен флатмап/флаттен для такого, насколько я понимаю
источник

XX

X X in Scala User Group
Pavel Ajtkulov
а тут в коде внезано есть кусок spray-json (ответить почему и зачем не смогу), и он внезапно сериализует целые как вещественные с нулем (54 -> "54.0"). case class JsNumber(value: BigDecimal) extends JsValue  и def apply(n: Int) = new JsNumber(BigDecimal(n)) в кишках. Можно как-то дешево без вещественных, и чтоб не выкидывать spray?
Вроде как в JS-е (JavaScriptObjectNotation) нет интов как таковых, там number-ы. Поэтому с т.з. спрея это не такое уж и неправильное поведение. Т.е. прям рассчитывать, что целое число в итоговом строковом json-представлении визуально останется целым числом без .0 и строить на этом какую-то дальнейшую логику не стоит.
источник

E

Elijah in Scala User Group
Λнтон Войцишевский
нужен флатмап/флаттен для такого, насколько я понимаю
окей, значит пойду попробую методы в моем зио классе сначала написать
источник

AD

Apache DOG™ in Scala User Group
X X
Вроде как в JS-е (JavaScriptObjectNotation) нет интов как таковых, там number-ы. Поэтому с т.з. спрея это не такое уж и неправильное поведение. Т.е. прям рассчитывать, что целое число в итоговом строковом json-представлении визуально останется целым числом без .0 и строить на этом какую-то дальнейшую логику не стоит.
Для этих целей лучче строки юзать
источник

AD

Apache DOG™ in Scala User Group
Точно не произойдет переокруглений-переинтерполяций
источник

Oℕ

Oleg ℕizhnik in Scala User Group
ZIO(r => f(r).run(r))
источник

Oℕ

Oleg ℕizhnik in Scala User Group
в целом запихивать функции в обёртки плохая идея, гораздо лучше сделать trait ZIO[-R, +E, +A]{ def run(r: R): Either[E, A]}
источник

E

Elijah in Scala User Group
Oleg ℕizhnik
ZIO(r => f(r).run(r))
спасибо,  я благодаря этому решению додумался как мап и флетмап сделать

def map[B](f: A => B): ZIO[R, E, B] = ZIO(r => run(r).map(f))

def flatMap[R1 <: R, E1 >: E, B](f: A => ZIO[R1, E1, B]): ZIO[R1, E1, B] =
  ZIO(r => run(r).flatMap(f(_).run(r)))
источник

E

Elijah in Scala User Group
Oleg ℕizhnik
в целом запихивать функции в обёртки плохая идея, гораздо лучше сделать trait ZIO[-R, +E, +A]{ def run(r: R): Either[E, A]}
это задачки от Гуся
источник

E

Elijah in Scala User Group
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Oleg ℕizhnik
в целом запихивать функции в обёртки плохая идея, гораздо лучше сделать trait ZIO[-R, +E, +A]{ def run(r: R): Either[E, A]}
в зио так и запихнули /shrug
источник

PA

Pavel Ajtkulov in Scala User Group
Andrey Mikhaylov
Но BigDecimal еще не значит, что в принте будет с точкой. Если посмотреть дальше - JsonPrinter https://github.com/spray/spray-json/blob/release/1.3.x/src/main/scala/spray/json/JsonPrinter.scala#L49, а String.valueOf(BigDecimal(2)) = "2"
спасибо, вообще spray не причем, мой косяк, был запрятан имплицит, где у всех Numeric вызывалось .toDouble
источник