Вопросы по теме 'scala-macros'
Scala: сутенерство без шаблонов
Я широко использую шаблон Pimp my Library и как удалить шаблон. Например, скажем, у меня есть какая-то черта PrettyPrint:
trait PrettyPrint { def prettyPrint: String }
Если я хочу прокачать Int и Double, мне нужно написать такой код:...
998 просмотров
schedule
12.04.2024
Компиляция макросов Scala 2.10-RC3 в проекте sbt
Я использую SBT для своего проекта и недавно решил добавить в него макросы.
Итак, я последовал примерам из этого проекта:
https://github.com/adamw/scala-macro-debug/tree/15fc8af48a6e7772c44b726513949a8ac9c9e3b7
В project/Build.scala есть...
302 просмотров
schedule
18.06.2023
Могу ли я использовать макросы Scala для интернализации внешнего DSL?
Я хотел бы реализовать внешний DSL, такой как SQL, в Scala с использованием макросов. Я уже видел документы о том, как реализовать внутренние DSL с помощью Scala . Кроме того, я недавно написал статью о как это можно сделать на Java , я сам....
1193 просмотров
schedule
10.07.2023
Макросы Scala и генерация кода
Учитывая простой источник примера, мне нужно иметь возможность создать конструктор копирования и метод неявного преобразования. Может кто-нибудь посоветовать, как добиться этого с помощью Scala 2.10 и новой функции макросов?
import...
322 просмотров
schedule
18.12.2022
Доступ макросов к членам объекта, где определен макрос
Скажем, у меня есть трейт Foo , который я инстанцирую с начальным значением i .
val foo = new Foo(6) // class Foo(i: Int)
и позже я звоню secondMethod , который, в свою очередь, звонит myMacro
foo.secondMethod(7) // def...
523 просмотров
schedule
01.05.2023
Вывод типа дерева в макросе scala
Как я могу попросить компилятор определить тип построенного дерева внутри макроса? Я нашел только Context.typeCheck, но он проверяет только типы, но не возвращает результат.
1190 просмотров
schedule
23.05.2022
Найти все возможные создания Sequences в дереве с помощью макросов Scala
Я хочу найти все возможные создания Sequences в дереве, используя макросы Scala.
val l = List(1, 2)
val v = Vector(1, 2)
val ab = ArrayBuffer(1, 2)
val s = Seq(1, 2)
но следующее совпадение не работает:
case Apply(TypeApply(Select(path,...
233 просмотров
schedule
29.06.2023
Scala Macro получает значение для имени термина
У меня есть следующий код:
использование .scala
object Test extends App {
import Macros._
val f = 1
Macros.get(f)
}
макросы.scala
import language.experimental.macros
import scala.reflect.macros.Context
object Macros {
def...
1832 просмотров
schedule
25.08.2022
Можно ли заменить метод применения по умолчанию, сгенерированный для классов случаев, в макросе Scala?
Похоже, это не работает (используя 2.11.1 и макрорай 2.0.1). Я надеялся, что методы, сгенерированные классом case, будут либо подавлены, либо окажутся в дереве, чтобы я мог избавиться от него. Это жесткое ограничение?
class evis extends...
310 просмотров
schedule
07.04.2022
Макрос Scala для присвоенной метки значения в методе применения
Из объекта Naming ниже (адаптировано из ответа в макрос Scala получает закрывающую строку ), который собирает метку, связанную со значением,
val x = Naming.apply("")
x: String = x
хотел бы изменить метод apply , чтобы он доставлял новый...
90 просмотров
schedule
23.11.2022
Scala: получить значение параметра по умолчанию: невозможно получить доступ к `apply$default$i` внутри объекта-компаньона
Я пишу макрос, который должен получить значение параметра конструктора по умолчанию. Этот ответ показывает, что это можно сделать, обратившись к сгенерированному компилятором методу apply$default$i в сопутствующем объекте, где apply — имя...
455 просмотров
schedule
21.02.2023
слишком мало списков аргументов для вызова макроса
Учитывая следующий код:
case class JetDim(dimension: Int) {
require(dimension > 0)
}
object JetDim {
def build(dimension: Int): Int = macro JetDimMacro.apply
}
и макрос, который он вызывает:
def apply(dimension: Int): Int = macro...
1293 просмотров
schedule
20.03.2023
Макрос Scala, который возвращает ClassTag абстрактного типа и абстрактного типа, зависящего от пути
Я пытался написать макрос, который генерирует теги классов абстрактных типов.
Я обобщил код, представленный в https://stackoverflow.com/a/19502658/2859613 :
object Macro {
import scala.reflect.ClassTag
import scala.reflect.macros.blackbox...
154 просмотров
schedule
10.10.2023
Scala: заменить метод во время выполнения
Допустим, у меня есть класс
class Original {
def originalMethod = 1
}
Теперь, скажем, у меня есть экземпляр этого
val instance = new Original
Можно ли теперь что-то сделать с instance во время выполнения, чтобы заменить...
1807 просмотров
schedule
13.01.2023
Как получить параметры/тип возвращаемого значения функции Scala?
У меня есть функция, и я хотел бы получить ее типы параметров и возвращаемый тип для использования в макросах Scala.
scala> val fn = (a: String, b: Double) => 123
fn: (String, Double) => Int = <function2>
scala> fn.getClass...
4018 просмотров
schedule
28.09.2022
Получение параметров из аннотации макроса Scala
Итак, у меня есть аннотация к функции (DefDef). Эта аннотация имеет параметры. Однако я не понимаю, как получить параметры из конструктора.
Пример использования:
class TestMacro {
@Foo(true)
def foo(): String = ""
foo
}
Вот код...
2157 просмотров
schedule
09.05.2024
Туннельный неявный параметр в тело функции вызова по имени
Рассмотрим следующий фрагмент кода:
object Example {
def run(f: => Unit): Unit = {
implicit val i = 1
f
}
def caller(): Unit =
run {
todo
}
def todo(implicit i: Int): Unit =...
657 просмотров
schedule
22.10.2022
Условная компиляция блоков кода в Scala
Мне было интересно, есть ли способ условно исключить блок кода из компиляции в Scala с использованием флагов времени компиляции (то есть некоторого грубого эквивалента #define семейства C). Я знаю, что нет прямого аналога, и я не думаю, что макросы...
904 просмотров
schedule
15.04.2022
макрос scala, который ссылается на этот объект
Я пытаюсь использовать макрос, чтобы устранить необходимость в scala для создания объекта функции, передаваемого вниз. Этот код используется во внутренних циклах нашей системы, и мы не хотим, чтобы внутренний цикл просто бесконечно выделял объекты....
411 просмотров
schedule
21.07.2023
Следствие плагина Gradle Scala для addCompilerPlugin в sbt
Как лучше всего добавить плагин компилятора Scala в задачу scalaCompile в Gradle?
1020 просмотров
schedule
11.06.2022