2010-06-02 15 views
11

Mam java-adnotacji, że powrót podwójną wartość:Czy mogę mieć wartość ujemną jako wyrażenie stałe w Scali?

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

Kiedy próbuję dołączyć adnotacji do pola w klasie scala i wartość jest ujemny jak tutaj:

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

otrzymuję komunikat kompilatora z komunikatem: "argument adnotacji musi być stałą, znalezioną: 0.05.unary_-". Zrozumiałem, że potrzebuję literalnego tekstu i zajrzałem do specyfikacji języka Scala i wydaje się, że znak jest używany tylko dla wykładnika, ale nie dla mantysy. Czy ktoś ma pomysł, w jaki sposób mogę mieć wartość ujemną jako informacje o środowisku wykonawczym za pomocą adnotacji?

Dzięki Klinke

+2

Wygląda na to znalazłeś ciemnej strony operatorów metod. :) –

+0

Używasz Scala 2.7? Obsługa adnotacji w 2.8 jest znacznie poprawiona. –

+0

* Aktualizacja: * Wygląda na to, że ta "funkcja" pozostaje w wersji 2.8. Właśnie to przetestowałem. –

Odpowiedz

7

Wydaje się, że jest to błąd.

Dopóki problem został rozwiązany, można skorzystać z faktu, że arytmetyka na stałe jest stałe i używać

@DoubleValue(0-0.05) 
+0

Dzięki, że działa i jest znacznie lepszym rozwiązaniem, niż "rozwiązanie", które miałem na myśli. – Klinke

Powiązane problemy