Podczas kompilacji po fragmencie kodu:Dlaczego Scala wymyka się spacjom w nazwach metod?
class MyTest {
@org.junit.Test
def `test test`() {
}
}
Metoda test test
jest oddany do kodu bajtowego jak test$u0020test
.
Dlaczego tak się dzieje i jak można to wyłączyć?
Przestrzeń jest poprawnym identyfikatorem nazwy metody zgodnie ze specyfikacją JVM. Ponadto, nie ma wzmianki o takim kodowaniu w specyfikacji języka Scala. Co więcej, inne języki JVM, takie jak Groovy i Spice Framework oparte na Groovy, nie kodują spacji.
Dlaczego potrzebuję tego: przyjazne dla ludzi nazwy JUnit i raporty z testów.
Java 1.8.0_45, Scala 2.11.6
Myślę, że jedynym powodem jest jednolitość. Prawdopodobnie nie chciały w specjalnym przypadku klasy postaci, które nie są poprawnymi identyfikatorami. Technicznie też nie widzę potrzeby. –
Jestem pewna, dlaczego spodziewałbyś się znaleźć to w specyfikacji językowej; jest to specyfikacja * języka *, a nie implementacja kompilatora, prawda? –