#kotlin
#kotlin
Вопрос:
Можно ли использовать имя перечисления без его префикса?
enum class Color { red, blue, green }
data class Shape(val color: Color)
fun main() {
println(Shape(color = red))
}
Постскриптум
Или, может быть, у него есть что-то вроде литеральных типов в TypeScript? На самом деле мне не нужно перечисление, строковое значение будет в порядке, как только компилятор сможет проверять значения во время компиляции, как в TypeScript.
type Color = 'red' | 'blue' | 'green'
class Shape {
constructor(public color: Color) {}
}
console.log(new Shape('red')) // Will be validated at compile time
Комментарии:
1. Какой префикс вы имеете в виду? Какой префикс класса нравится
Color.red
?
Ответ №1:
Да, вы можете использовать перечисление без префикса класса, если вы его импортируете:
import Color.*
enum class Color { Red, Blue, Green }
val color = Red
Примечание: По соглашению имена перечислений должны начинаться с заглавной буквы.
Редактировать
Сначала я подумал, что можно было бы не импортировать перечисление, когда вы используете его в том же файле, но в другом классе или функции верхнего уровня, но вам все равно придется его импортировать — чтобы избежать префикса класса.
Комментарии:
1. Спасибо, но первый код в вашем примере не будет компилироваться
2. @Alex Craft вы правы. Обновит мой ответ