Size: a a a

Scala User Group

2020 August 01

BK

Boris V. Kuznetsov in Scala User Group
Sergey Alaev
Смысл стрелок в том, чтобы перенести все издержки по композиции на этап инициализации программы, уменьшая аллокации в рантайме. Насколько я понял ZIO Arrow, его возможности очень ограничены.
Соглашусь, в этом вся идея - избежать лишних JVM Allocations и dispatch. Когда Я проверял, что выводит компилятор из этой конструкции на OpenJdk 11,  Я использовал CFR Decompiler и получил такое: arrowComposed = (ZArrow)MODULE$.arrows().foldLeft((Object)ZArrow$.MODULE$.identity(), (Function2 & Serializable)(x$4, x$5)
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Sergey M
Hello everybody
Тема - Reflection

Я тут хочу написать функцию которая достаёт названия полей из класса (и case и обычного тоже)

написал такое

   case class Pers(name: String, age: Int)
   class Car(name: String)

   val p = Pers("Ivan", 2)
   val c = new Car("BMV")

   import scala.reflect.runtime.universe._
   
   def getListOfFields(p: Object): List[String] = {
     val m = runtimeMirror(p.getClass.getClassLoader)

     val symbol = m.classSymbol(p.getClass).typeSignature.typeSymbol.asClass
     val ctor = symbol.primaryConstructor

     val paramList = ctor.typeSignature.paramLists
     paramList.flatten.map(s => s.name.toString)
   }

   getListOfFields(p)
   getListOfFields(c)

//val res3: List[String] = List(name, age)
//val res4: List[String] = List(name)


Это же можно как-то проще написать? А то как-то слишком cumbersome
Но зато так работает
А какая изначально задача решается?
источник

SM

Sergey M in Scala User Group
Dmitry Zuev
Shapeless
а без этого никак?
источник

DZ

Dmitry Zuev in Scala User Group
Sergey M
а без этого никак?
Магнолия
источник

VE

Vasiliy Efimov in Scala User Group
Sergey M
а без этого никак?
можно свои макросы написать
источник

SM

Sergey M in Scala User Group
Юрий Бадальянц
А какая изначально задача решается?
изначально proto файлы
по ним scalapb генерирует case классы
хочу по этим (любым) case классам создавать таблицу в hbase
источник

BK

Boris V. Kuznetsov in Scala User Group
@sergey_alaev  А для MonadComposed выводится цепочка Function0.flatMap (Funtion1)  и т.д. Поэтому, есть убеждение, что такая композиция работает верно. Если есть контр примеры, то буду благодарен, если покажете
источник

DZ

Dmitry Zuev in Scala User Group
Sergey M
изначально proto файлы
по ним scalapb генерирует case классы
хочу по этим (любым) case классам создавать таблицу в hbase
В какой момент?
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Sergey M
изначально proto файлы
по ним scalapb генерирует case классы
хочу по этим (любым) case классам создавать таблицу в hbase
Я думаю тут правда проще шейплейсом взять LabeledGeneric
источник

SM

Sergey M in Scala User Group
Dmitry Zuev
В какой момент?
job'a "слушает" прилетают ли в определённые папки pb файлы с описанием в proto файлах
и
1) создаёт hbase таблицу по proto файлам - что надо решить
2) засовывает данные из pb в эту hbase таблицу
источник

DZ

Dmitry Zuev in Scala User Group
Sergey M
job'a "слушает" прилетают ли в определённые папки pb файлы с описанием в proto файлах
и
1) создаёт hbase таблицу по proto файлам - что надо решить
2) засовывает данные из pb в эту hbase таблицу
Эммммммм
источник

VE

Vasiliy Efimov in Scala User Group
Sergey M
job'a "слушает" прилетают ли в определённые папки pb файлы с описанием в proto файлах
и
1) создаёт hbase таблицу по proto файлам - что надо решить
2) засовывает данные из pb в эту hbase таблицу
можно просто распарсить протобуф и создать схему
источник

SM

Sergey M in Scala User Group
я вот думаю есть ли в scalapb какая-то фигня которая позволяет достать список полей
источник

DZ

Dmitry Zuev in Scala User Group
Sergey M
я вот думаю есть ли в scalapb какая-то фигня которая позволяет достать список полей
Скала ПБ на компайлтайме
источник

SM

Sergey M in Scala User Group
Dmitry Zuev
Скала ПБ на компайлтайме
аааа
а жаль
источник

VE

Vasiliy Efimov in Scala User Group
В The Type Astronaut’s Guide to Shapeless есть пример по превращению кейс-класса в строку csv например, на основе этого легко сделать выражения для вставки в таблицу
источник

DZ

Dmitry Zuev in Scala User Group
Да тут нужен просто парсер ПБ, и генератор хбейз стейтмента
источник

DZ

Dmitry Zuev in Scala User Group
Хоть на питоне пиши
источник

SM

Sergey M in Scala User Group
Vasiliy Efimov
В The Type Astronaut’s Guide to Shapeless есть пример по превращению кейс-класса в строку csv например, на основе этого легко сделать выражения для вставки в таблицу
о
спасибо
источник

DZ

Dmitry Zuev in Scala User Group
Sergey M
о
спасибо
Оно вас не надо
источник