Scala 中可以使用负值作为常量表达式吗?

发布于 2024-09-04 10:54:24 字数 432 浏览 3 评论 0原文

我有一个返回双精度值的 Java 注释:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface DoubleValue {
  double value();
} 

当我尝试将注释附加到 scala 类中的字段并且该值是负值时,如下所示:

class Test {
  @DoubleValue(-0.05)
  var a = _
}

我收到编译器错误,并显示以下消息:“注释参数需要是常数;发现:0.05.unary_-"。我知道我需要一个数字文字,并且我查看了 Scala 语言规范,似乎 - 符号仅用于指数,而不用于尾数。有人知道如何使用注释将负值作为运行时信息吗?

谢谢, 克林克

I have an Java-Annotation that return a double value:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface DoubleValue {
  double value();
} 

When i try to attach the annotation to a field in a scala class and the value is negativ like here:

class Test {
  @DoubleValue(-0.05)
  var a = _
}

i get an compiler error with the message: "annotation argument needs to be a constant; found: 0.05.unary_-". I understood that i need a numerical literal and i looked into the Scala Language Specification and it seems, that the - sign is only used for the exponent but not for the mantissa. Does someone has an idea how i can have a negative value as runtime information using annotations?

Thanks,
Klinke

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

请别遗忘我 2024-09-11 10:54:24

看来这是一个错误。

在错误修复之前,您可以利用常量算术是常量这一事实并使用

@DoubleValue( 0-0.05 )

It appears that this is a bug.

Until the bug is fixed, you can take advantage of the fact that arithmetic on a constant is a constant and use

@DoubleValue( 0-0.05 )
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文