Возможно ли иметь значение дженериков в scala? То есть дженерики, которые являются не типом, а значением. Я хотел бы, чтобы они выглядели примерно так: class Animal[legs: Int]
, но он не компилируется.
Мне удалось заставить это скомпилироваться, но я не уверен, что компилятор понимает это так же, как я.
abstract sealed class WheeledVehicle(wheels: Int)
case object Motorcycle extends WheeledVehicle(2)
case object Atv extends WheeledVehicle(4)
case object Car extends WheeledVehicle(4)
case object Truck extends WheeledVehicle(6)
Более того, мне не удалось сопоставить значение vehicle
.
vehicle match {
case _: WheeledVehicle(2) => useTwoWheels()
case _: WheeledVehicle(4) => useFourWheels()
case _: WheeledVehicle(6) => useSixWheels()
}
Обобщения значений существуют в некоторых других языках, таких как C ++. Но как насчет scala? А если нет, есть ли другой способ сделать то, что я хотел бы сделать?