Описание тега scala-macros
Макросы Scala - это средство для Scala - языка программирования общего назначения - которое позволяет метапрограммировать во время компиляции синтаксические деревья Scala изнутри языка Scala.
1
ответ
scala.meta.Lit.type не принимает параметры
Когда я запускаю следующее: import scala.meta._ class Test { val x = q"1" } Я получаю scala.meta.Lit.type не принимает параметры val x = q "1" scalameta_2.11: 1.8.0 paradise_2.11.8: 3.0.0-M7 Я пытаюсь заставить работать некоторые базовые примеры мак…
23 апр '18 в 11:50
1
ответ
Scala Macro: создание новых классов с типами Option
Я хочу написать макрос с учетом этого: @MetaRest case class User( @get id : Int, @get @post @patch name : String, @get @post email : String, registeredOn : DateTime ) Создайте следующий фрагмент кода: object User { case class Get(id: Int, name: Stri…
04 фев '15 в 09:33
1
ответ
Прокси-макрос scala, выдача аргументов метода преобразования в значения
Я пытаюсь написать прокси-макрос, используя макросы scala. Я хочу иметь возможность прокси черты X и возвращать экземпляры X, которые вызывают функцию для всех методов X. Вот что я сделал до сих пор. Скажем, мы хотим проксировать черту TheTrait (кот…
17 ноя '15 в 12:21
1
ответ
Получение правильных параметров конструктора типа для "уточненного" типа
У меня возникают проблемы при сравнении "совместимости" между двумя типами с помощью отражения (на самом деле я пишу макрос). Например, я хочу разрешить Vector[Int] === List[Int], Теперь я знаю общий подход. Но проблема в том, что я не могу получить…
23 апр '16 в 23:01
1
ответ
Вызов функции с неявным параметром из квазицитата
По какой-то причине каждый раз, когда я пытаюсь вызвать функцию с неявным параметром из квазицитат, происходит сбой с Can't unquote x.universe.Tree, consider providing an implicit instance of Liftable[x.universe.Tree] Что в этом плохого? Разве мне н…
22 окт '15 в 08:57
1
ответ
Макрос Scala для создания указателей полей и методов
Я хотел бы создать макрос Scala &, который в случае поля будет возвращать пару получатель / установщик, а в случае метода - частично примененную функцию. Что-то вроде следующего: trait ValRef[T] { def get(): T } trait VarRef[T] extends ValRef[T] { d…
06 дек '14 в 20:48
0
ответов
Заставить pureconfig генерировать ConfigReader для классов дел
У меня есть неявный класс, который оборачивается вокруг типизированного класса Config для анализа информации из него. Этот класс использует pureconfig для анализа данных. Я использую это, потому что я предпочитаю config.as[String]("foo") вместо load…
01 июл '18 в 13:49
1
ответ
Scala сквозные обертки
Очень часто я хочу "заменить" один метод данного объекта. foo: Foo foo.bar(i) // original foo.baz(s) // replace this implementation Я закончу создание сквозного класса-обёртки. class FooWrapper(foo: Foo) extends Foo { def bar(i: Int) = foo.bar(i) de…
30 ноя '14 в 21:33
1
ответ
Квазицитаты для нескольких параметров и списков параметров
Квазицитаты удивительны - они делают написание макросов в Scala чрезвычайно менее болезненным, и по моему опыту они почти всегда работают точно так, как я ожидал. И что самое приятное, они теперь доступны в виде плагина в Scala 2.10. Этот вопрос о …
01 сен '13 в 14:51
1
ответ
Использование вложений с макросами в Scala 2.10
Обновление: я подозреваю, что то, что я хочу, могло бы быть невозможным, и я написал сообщение в блоге со своими рассуждениями (и некоторыми альтернативами) здесь. Я был бы очень рад, если бы мне сказали, что я неправ. Предположим, я хочу создать эк…
10 июл '13 в 21:00
1
ответ
Как использовать макросы Scala для создания новых частичных функций или их преобразования?
У меня возникают проблемы при написании макроса, который преобразует данную частичную функцию и создает новую частичную функцию. Например, я хочу иметь возможность разложить данную частичную функцию на ее элементы - механизм связывания, условие охра…
08 янв '17 в 23:24
1
ответ
Почему равенство типов терпит неудачу, а соответствие типов в этом макросе оказывается успешным?
Я пытаюсь определить тип параметра, передаваемого в макрос во время компиляции. Кажется, работает, когда я использую <:< но не когда я использую =:=, Я не уверен почему. Может кто-то указать мне верное направление? Я включил пример кода ниже. …
30 май '13 в 21:19
1
ответ
Получить полное имя метода в макросах scala
Я использую макросы Scala и сопоставляю Apply и я хотел бы получить полностью определенное имя вызываемой функции. Примеры: println("") -> scala.Predef.println scala.Predef.println("") -> scala.Predef.println class Abc { def met(): Unit = ??? …
15 ноя '18 в 19:20
0
ответов
Scala Macro для создания общих картографов для моего DAO
Так что это мой макрос package com.fullfacing.ticketing.macros import com.mongodb.DBObject import scala.language.experimental.macros import scala.reflect.macros.whitebox.Context /** * Project: com.fullfacing.ticketing.macros * Created on 2015/05/26.…
27 май '15 в 10:45
0
ответов
Сбой генерации Scaladoc при обращении к методам, сгенерированным макросами аннотаций
У меня есть два класса, позвоните им Foo а также Fizz, Foo использует макрос аннотации под названием expand создавать псевдонимы некоторых из его методов (фактическая реализация делает немного больше, чем создание псевдонимов, но простая версия все …
08 мар '17 в 23:45
1
ответ
Как построить динамическую последовательность в макросе scala?
У меня есть макрос Scala, который выводит вложенные классы case. Я могу собрать фрагменты выражений, созданных с использованием reify, для программного создания вложенных классов case: case class Foo(name: String) case class Bar(foo: Foo) def foo(na…
31 окт '13 в 17:50
2
ответа
Как оценить выражение внутри макроса Scala?
Я пытаюсь оценить Expr внутри макроса, используя Context#eval метод: //Dummy implementation def evalArrayTree(c: Context)(a: c.Expr[ArrayTree]): c.Expr[Array[Double]] = { import c.universe._ println( c.eval(a) ) val tree = reify( Array(0.0,0.0,0.0) …
05 фев '14 в 14:37
1
ответ
Реализуйте макрос в суперклассе и раскройте его в подклассах
Я хочу сделать что-то вроде этого: trait Endo { def apply[T](x: T): T } trait SuperType { def endoMap(f: Endo): SuperType = macro SuperTypeMacro.endoMapImpl } case class Foo(x: Int) extends SuperType { // endoMapImpl expands to // Foo(f(x)) } case c…
26 фев '14 в 13:35
1
ответ
Используйте макросы scala для копирования метода из класса в объект-компаньон
Я пойду прямо к делу. Допустим, у меня есть следующее определение черты: trait Routable{ def routing(): String } И я определяю следующий класс: case class MyEvent(name: String, age: Int) extends Routable{ override def routing(): String = "this is my…
01 апр '18 в 14:32
4
ответа
Как я могу создать экземпляр класса Case с аргументами конструктора без параметров в Scala?
Я делаю приложение Scala, которое устанавливает значения поля отражения. Это работает хорошо. Однако для установки значений полей мне нужен созданный экземпляр. Если у меня есть класс с пустым конструктором, я могу легко сделать это с помощью classO…
11 дек '12 в 01:21