Есть ли способ получить ошибку времени компиляции (или, по крайней мере, предупреждение) при назначении псевдонимов типов, которые имеют один и тот же базовый тип?Scala: принудительная ошибка компиляции при несоответствии псевдонимов типа
Другими словами, у меня есть этот код:
type Address = String
type City = String
def foo(x:Address) = ...
Я хочу, чтобы получить ошибку во время компиляции/предупреждения, если я:
val city: City = "Dublin"
foo(city)
Насколько я могу судить, компилятор позволяет это, потому что они являются одним и тем же базовым типом.
Могу ли я создавать классы классов значений? Мне не нравится использование нового ключевого слова –
Вы можете определить классы case. К слову: причина, по которой вы можете опустить «новое» ключевое слово, - это метод (apply) -компонента (сгенерированный) компаньона-объекта, поэтому вам необязательно определять класс case, чтобы избавиться от ключевого слова. –
Да, я знаю, я просто предпочитаю не определять своих собеседников для всех псевдонимов типа, это длинный и скучный^_ ^ –