gpt4 book ai didi

scala - 如何在 Scala 中定义和使用自定义注解

转载 作者:行者123 更新时间:2023-12-03 15:14:06 36 4
gpt4 key购买 nike

我正在尝试在 Scala 中使用自定义注释。在此示例中,我创建了一个要使用元数据进行注释的字符串(在本例中为另一个字符串)。然后,给定一个数据实例,我想阅读注释。

scala> case class named(name: String) extends scala.annotation.StaticAnnotation
defined class named

scala> @named("Greeting") val v = "Hello"
v: String = Hello

scala> def valueToName(x: String): String = ???
valueToName: (x: String)String

scala> valueToName(v) // returns "Greeting"

这甚至可能吗?

最佳答案

使用 scala 2.11.6,这可以提取注释的值:

case class Named(name: String) extends scala.annotation.StaticAnnotation

val myAnnotatedClass: ClassSymbol = u.runtimeMirror(Thread.currentThread().getContextClassLoader).staticClass("MyAnnotatedClass")
val annotation: Option[Annotation] = myAnnotatedClass.annotations.find(_.tree.tpe =:= u.typeOf[Named])
val result = annotation.flatMap { a =>
a.tree.children.tail.collect({ case Literal(Constant(name: String)) => doSomething(name) }).headOption
}

关于scala - 如何在 Scala 中定义和使用自定义注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35420334/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com