【发布时间】:2021-01-15 01:05:39
【问题描述】:
我正在使用 Scala 编程语言。我想创建自定义注释来注释案例类的字段。
this 线程展示了如何创建它,但我的场景面临两个问题
- 可以有 .在注释中。例如@abc.xyz
- 我想创建不带参数的注释。所以我无法创建案例类
我该怎么做?
谢谢
【问题讨论】:
标签: scala annotations case-class
我正在使用 Scala 编程语言。我想创建自定义注释来注释案例类的字段。
this 线程展示了如何创建它,但我的场景面临两个问题
我该怎么做?
谢谢
【问题讨论】:
标签: scala annotations case-class
广告。 1 - 您可以使用反引号在名称中包含 .,但我认为有 0 个理由(您可以将 xyz 放入 abc 包中)
// possible but it's anti-pattern
class `abc.xyz` extends scala.annotation.StaticAnnotation
case class Test(
@`abc.xyz` field: String
)
// better
package my.abc
class xyz extends scala.annotation.StaticAnnotation
// elsewere
import my.abc
case class Test(
@abc.xyz field: String
)
广告。 2 什么注释参数与案例类有关?注释不一定是case class。有些人使用它是因为在宏中他们可以对具体化注释值使用模式匹配,但仅此而已。
case class Foo() extends scala.annotation.StaticAnnotation
class Bar extends scala.annotation.StaticAnnotation
case class Test(
@Foo foo: String,
@Bar bar: String
)
【讨论】: