Size: a a a

Scala User Group

2020 November 13

K

KrivdaTheTriewe in Scala User Group
я не совсем пнимаю, в какой момент хинты  юзаются
источник

GP

Grigory Pomadchin in Scala User Group
KrivdaTheTriewe
я не совсем пнимаю, в какой момент хинты  юзаются
кодек дерайвится когда
источник

K

KrivdaTheTriewe in Scala User Group
Grigory Pomadchin
кодек дерайвится когда
я стремлюсь короче к  тому чтобы , у меня был класс
abstract class ConfiguredSparkApp[Config: ConfigReader] {
 def job(config: Config): ZIO[JobStarter.baseEnv, Throwable, Unit]
 final def main(args: Array[String]): Unit =
   JobStarter.run[Config](args)(job)
}
чтобы как только я сделал
object ExampleApp extends ConfiguredSparkApp[ExampleConf] {...}
у меня все сгенерировалось автоматически с нужным хинтом
источник

K

KrivdaTheTriewe in Scala User Group
то есть идеально, чтобы пользователь даже ридеры свои не определял
источник

ΛВ

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

ΛВ

Λнтон Войцишевский... in Scala User Group
abstract class ConfiguredSparkApp[Config] {
 implicit val instanceReader: ConfigReader = derevoDeraivilka.instance[Config]
 def job(config: Config): ZIO[JobStarter.baseEnv, Throwable, Unit]
 final def main(args: Array[String]): Unit =
   JobStarter.run[Config](args)(job)
}

хотя я не уверен, что это сработает
так не сработает, но можно в эту сторону покопать
источник

K

KrivdaTheTriewe in Scala User Group
вот эта шляпа не работает тож (
источник

K

KrivdaTheTriewe in Scala User Group
abstract class ConfiguredSparkApp[Config <: (Serializable with Product)] {
 implicit def hint: ProductHint[Config] = ProductHint[Config](ConfigFieldMapping(CamelCase, CamelCase))
 implicit val reader = deriveReader[Config]
 def job(config: Config): ZIO[JobStarter.baseEnv, Throwable, Unit]
 final def main(args: Array[String]): Unit = {
   val configParser = new JobConfig[Config]
   JobStarter.run[Config](configParser.parseArgs(args))(job)
 }
}
источник

K

KrivdaTheTriewe in Scala User Group
причем, при таких ограничениях на конфиг, спарк умел выводить кодеки
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
ну напиши сам дерайвилку для продукта
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
язык то молодой
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
либы тоже
источник

GP

Grigory Pomadchin in Scala User Group
KrivdaTheTriewe
причем, при таких ограничениях на конфиг, спарк умел выводить кодеки
спарк рефлектом выводит ну
источник

GP

Grigory Pomadchin in Scala User Group
там ж своя машинерия
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
KrivdaTheTriewe
вот эта шляпа не работает тож (
тут по идее в общем случае для некого неизвестного тебе типа Config никак не вывести ридер
источник

ΛВ

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

K

KrivdaTheTriewe in Scala User Group
Grigory Pomadchin
спарк рефлектом выводит ну
уверен?
источник

K

KrivdaTheTriewe in Scala User Group
там шейплесс
источник

GP

Grigory Pomadchin in Scala User Group
KrivdaTheTriewe
там шейплесс
ну покажи про что ты
источник

GP

Grigory Pomadchin in Scala User Group
а то млаоли какие кодеки спарк выводит
источник