2010-06-02 27 views
11

Tôi có một Java-Chú mà trả về một giá trị gấp đôi:Tôi có thể có giá trị âm như biểu thức liên tục trong Scala không?

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

Khi tôi cố gắng để đính kèm các chú thích để một lĩnh vực trong một lớp học scala và giá trị là negativ như ở đây:

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

tôi nhận được một lỗi biên dịch với thông báo: "đối số chú thích cần phải là một hằng số, được tìm thấy: 0.05.unary_-". Tôi hiểu rằng tôi cần một chữ số và tôi nhìn vào Đặc điểm Ngôn ngữ Scala và có vẻ như, dấu - chỉ được sử dụng cho số mũ chứ không dùng cho phần định trị. Có ai đó có một ý tưởng làm thế nào tôi có thể có một giá trị tiêu cực như thông tin thời gian chạy bằng cách sử dụng chú thích?

Xin cảm ơn, Klinke

+2

Dường như bạn có thể đã tìm thấy mặt tối của các nhà khai thác như các phương pháp. :) –

+0

Bạn đang sử dụng Scala 2.7? Xử lý chú thích trong 2.8 được cải thiện nhiều. –

+0

* Cập nhật: * Rõ ràng "tính năng" này vẫn còn trong 2.8. Tôi vừa thử nghiệm nó. –

Trả lời

7

Dường như đây là lỗi.

Cho đến khi lỗi được cố định, bạn có thể tận dụng thực tế là số học trên một hằng số là một hằng số và sử dụng

@DoubleValue(0-0.05) 
+0

Cảm ơn, đó là công trình và là một workaround tốt hơn nhiều sau đó là "giải pháp" tôi đã có trong tâm trí. – Klinke

Các vấn đề liên quan