Czy istnieje sposób na uzyskanie błędu czasu kompilacji (lub co najmniej ostrzeżenia) podczas przypisywania różnych aliasów typów, które mają ten sam podstawowy typ?Scala: Wymuszenie błędu kompilacji na niedopasowaniu aliasu typu
Innymi słowy, że mam tego kodu:
type Address = String
type City = String
def foo(x:Address) = ...
Chcę się błąd czasu kompilacji/ostrzeżenie jeśli robię:
val city: City = "Dublin"
foo(city)
O ile mogę powiedzieć, Kompilator pozwala na to, ponieważ są one tego samego rodzaju.
Czy mogę tworzyć klasy wartości? Nie podoba mi się nowe użycie słowa kluczowego. –
Możesz zdefiniować klasy wielkości wartości. Przy okazji: Powodem, dla którego można pominąć słowo kluczowe 'new', jest metoda 'apply' (generowana) obiektu towarzyszącego, więc nie trzeba definiować klasy case, aby pozbyć się słowa kluczowego. –
Tak, wiem, wolę nie definiować własnych kompanów dla wszystkich aliasów typów, jest długi i nudny^_ ^ –