Описание тега scala-reflect

В Scala 2.10 была представлена ​​новая библиотека отражения для добавления в Scala более мощного инструментария общих возможностей отражения. Наряду с полнофункциональным отражением времени выполнения для типов и универсальных шаблонов Scala, Scala 2.10 также поставляется с возможностями отражения во время компиляции в виде макросов, а также с возможностью преобразовывать выражения Scala в абстрактные синтаксические деревья.
0 ответов

scala.reflect.internal.MissingRequirement Ошибка

Я запускаю искровую работу в кластере и получаю это scala.reflect.internal.MissingRequirementError: class sf.dat.hadoop.dmv.auto.beans.DMVRecord in JavaMirror with sun.misc.Launcher$AppClassLoader@aede59e of type class sun.misc.Launcher$AppClassLoad…
1 ответ

Получение правильных параметров конструктора типа для "уточненного" типа

У меня возникают проблемы при сравнении "совместимости" между двумя типами с помощью отражения (на самом деле я пишу макрос). Например, я хочу разрешить Vector[Int] === List[Int], Теперь я знаю общий подход. Но проблема в том, что я не могу получить…
23 апр '16 в 23:01
1 ответ

Создание коллекций Scala с помощью метода наложения с отражением Scala

У меня есть инструмент, который пытается создать экземпляры подклассов различных коллекций Scala, например scala.collection.Seq, Я не знаю заранее, какой конкретный класс должен быть построен, поэтому я пытаюсь использовать отражение, чтобы получить…
0 ответов

Как создать универсальный класс, используя отражение в scala

У меня есть иерархия классов, начинающаяся с этих черт: sealed trait MessageBody sealed trait MessageKey[T <: MessageBody] Мне нужно автоматически построить список всех прямых подклассов MessageKey, С поиском здесь и там я подошел к этому моменту…
16 дек '15 в 04:46
1 ответ

Получить полное имя метода в макросах scala

Я использую макросы Scala и сопоставляю Apply и я хотел бы получить полностью определенное имя вызываемой функции. Примеры: println("") -> scala.Predef.println scala.Predef.println("") -> scala.Predef.println class Abc { def met(): Unit = ??? …
15 ноя '18 в 19:20
2 ответа

Почему мы должны явно указывать класс типов ClassTag

Теперь, когда scala перешел к исправлению стирания типа JVM с помощью ClassTag класс типов, почему он включен, вместо того, чтобы компилятор всегда захватывал сигнатуру типа для проверки во время выполнения. Наличие неявного параметризованного огран…
17 май '15 в 23:04
0 ответов

Рефлексивно определяя совместимость дженериков Scala

Учитывая тип цели (скажем, List[String]) и некоторый объект o, цель состоит в том, чтобы найти метод o с возвращаемым типом, который совместим с целевым типом. В случае отсутствия обобщений это можно проверить, сравнив целевой тип и тип возвращаемог…
09 июл '17 в 09:16
2 ответа

TypeTag для тематических классов

Я хотел бы сделать случай класса Bla который принимает параметр типа A и он знает тип A во время выполнения (он хранит его в своем info поле). Моя попытка показана в примере ниже. Проблема в том, что этот пример не компилируется. case class Bla[A] (…
10 апр '17 в 17:17
2 ответа

Функция Scala, которая извлекает Class[_] из общего

Итак, что я хочу сделать: def foo(clazz: Class[_]): Unit = { val int = classOf[Int] val str = classOf[String] val opt = classOf[Option[_]] clazz match { case `int` => println("INT!") case `str` => println("STRING!") case `opt` => foo(clazz.…
15 ноя '18 в 12:30
1 ответ

Сглаживание типов в отражении Scala

Как я могу разрешить псевдонимы с учетом Type? Т.е. import reflect.runtime.universe._ type Alias[A] = Option[Option[A]] val tpe = typeOf[Alias[_]] val ExistentialType(quantified, underlying) = tpe Как я могу получить Option[Option[_$1]] от underlyin…
28 мар '15 в 16:49
1 ответ

Как я могу создать тип Option во время выполнения (отражение)?

Используя отражение, я определил тип вещи во время выполнения, t: Type. Теперь я хочу создать новый тип опции [t]. Как я могу это сделать? val t: Type = ... val optT: Type = ??? // Option of whatever t is Почему я хочу это: у меня есть функция-обраб…
17 фев '19 в 15:17
1 ответ

Как загрузить неявный Manifest из поля полиморфного типа

Я пытаюсь построить интерпретатор для моего ADT, но я не знаю, как решить проблему загрузки неявных манифестов хорошим способом. sealed trait Polymorphic[T] case class Type1[T: Manifest](field1: T) extends Polymorphic[T] case class Type2[T: Manifest…
10 ноя '16 в 23:00
2 ответа

java.lang.NoSuchMethodException: scala.collection.immutable.$colon$colon

Я пытаюсь вызвать функцию, используя переменную как тип String, динамически, т.е. переменная будет содержать имя функции как String. Итак, мне нужно вызвать функцию с использованием этой переменной. Итак, я использую Scala Reflection. Работает, если…
29 окт '18 в 11:27
1 ответ

Использование отражения Scala для проверки метода объекта или для определения типа ключа на карте

Я портирую класс из Ruby в Scala 2.11, который реализует объединение переменных в сообщениях. Я хотел бы передать массив объектов методу слияния и заставить его искать в каждом объекте ключи, на которые есть ссылки в тексте сообщения. Ядром этого яв…
28 ноя '15 в 18:41
0 ответов

Доступ к методу AST в Scala

Есть ли рефлексивный способ доступа к методам классов AST? class Clazz { def hello(a: Int) = (a + 1).toLong } val src = """ class Clazz { def hello(a: Int) = (a + 1).toLong } """ Я хочу получить что-то подобное scala> val a = 100 scala> showRa…
24 мар '15 в 23:13
1 ответ

Отражение scala, получить параметр типа суперкласса

Как я могу получить конкретный тип параметров типа суперкласса из подкласса? Предполагая, что у меня есть общий суперкласс, промежуточный класс и подкласс, как показано ниже: class SuperClass[A, B] class IntClass[A] extends SuperClass[A, Int] class …
25 сен '18 в 08:56
1 ответ

Ошибка компиляции "not found value ..." после раскрытия макроса

Я новичок в макросах скала. Я пишу автоматизированный JSON Writer/ Reader для клиента InfluxDB. Читатель выглядит так: trait InfluxReader[T] { def read(js: JsArray): T } InfluxFormatter: object InfluxFormatter { /** * Generate InfluxReader for type …
06 мар '18 в 16:29
1 ответ

Guice, не в состоянии связать ClassTag[T] (узнать имя класса T)

Я хотел бы знать название универсального класса. Решение, которое я использую сейчас, следующее. Я определил класс class A[T: ClassTag] {...} быть в состоянии сделать classTag[T].toString, Это компилируется, но есть проблема с Guice. Я получаю ошибк…
1 ответ

В scala, как Map[_,_] и scala.collection.immutable.Map[_,_] могут иметь разные TypeTag?

Они ссылаются на одно и то же, но когда я сравниваю 2 типа тегов: val ttg1 = typeTag[Map[_,_]] val ttg2 = typeTag[immutable.Map[_,_]] assert(ttg1.tpe == ttg2.tpe) Я получил: Map[_, _] did not equal scala.collection.immutable.Map[_,_] ScalaTestFailur…
30 дек '17 в 04:29
1 ответ

Scala - производительность при выполнении TypeTags, ClassTags и WeakTypeTags

Введение: ... TypeTag[T] инкапсулирует представление типа времени выполнения некоторого типа во время компиляции T,... ... TypeTag s всегда генерируются компилятором.... [1] TypeTag S расположены в scala.reflect.**пакеты. В другом ответе SO упоминае…
17 апр '15 в 23:15