С помощью Swift enum вы можете опустить имя enum
в тех случаях, когда можно использовать только значение этого типа.
Так, когда дано перечисление (Swift / Kotlin)
enum (class) CompassPoint {
case north
case south
case east
case west
}
При создании новой переменной Swift требуется только имя перечисления:
// type unclear, enum name needed
var directionToHead = CompassPoint.west
// type clear, enum name can be dropped
directionToHead = .east
// type clear, enum name can be dropped
switch directionToHead {
case .north:
print("Lots of planets have a north")
case .south:
print("Watch out for penguins")
case .east:
print("Where the sun rises")
case .west:
print("Where the skies are blue")
}
В Kotlin для той же ситуации вам нужно написать
// type unclear, enum name needed
var directionToHead = CompassPoint.west
// type clear, enum name still needed
directionToHead = CompassPoint.east
// each case needs the enum name
when(directionToHead) {
CompassPoint.north -> println("Lots of planets have a north")
CompassPoint.south -> println("Watch out for penguins")
CompassPoint.east -> println("Where the sun rises")
CompassPoint.west -> println("Where the skies are blue")
}
Есть ли причина для этого и / или есть ситуации в Kotlin, где можно использовать только .north
или north
?
Редактировать: кажется, что импорт enum «исправляет» это и необходимо, даже когда enum определен в том же файле, что и используемый.
Хотя это помогло практически я до сих пор не понимаю, зачем нужен импорт.