在 Kotlin 中使用没有前缀的枚举名称?

时间:2020-12-30 19:43:43

标签: kotlin

是否可以使用没有前缀的枚举名称?

structure(list(TloCriminal1CrimeDetails1Di_0001 = structure(c(10197, 
12205, 15979, 12586, NA, 13787, 12913, 14616), label = "TloCriminal1CrimeDetails1DispositionDate", format.sas = "DATE", class = "Date"), 
    TloCriminal1CrimeDetails2Di_0001 = structure(c(10148, NA, 
    15979, 12586, NA, 14516, 12913, 14665), label = "TloCriminal1CrimeDetails2DispositionDate", format.sas = "MMDDYY", class = "Date"), 
    TloCriminal1CrimeDetails3Di_0001 = structure(c(10148, NA, 
    NA, 12586, NA, 13787, 12913, 14665), label = "TloCriminal1CrimeDetails3DispositionDate", format.sas = "MMDDYY", class = "Date"), 
    TloCriminal1CrimeDetails4Di_0001 = structure(c(NA, NA, NA, 
    NA, NA, NA, 12913, 14670), label = "TloCriminal1CrimeDetails4DispositionDate", format.sas = "MMDDYY", class = "Date"), 
    TloCriminal1CrimeDetails5Di_0001 = structure(c(NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_), label = "TloCriminal1CrimeDetails5DispositionDate", format.sas = "MMDDYY", class = "Date"), 
    TloCriminal1CrimeDetails6Di_0001 = structure(c(NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_), label = "TloCriminal1CrimeDetails6DispositionDate", format.sas = "MMDDYY", class = "Date"), 
    TloCriminal1CrimeDetails7Di_0001 = structure(c(NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_), label = "TloCriminal1CrimeDetails7DispositionDate", format.sas = "MMDDYY", class = "Date"), 
    TloCriminal1CrimeDetails8Di_0001 = structure(c(NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_), label = "TloCriminal1CrimeDetails8DispositionDate", format.sas = "MMDDYY", class = "Date"), 
    TloCriminal1CrimeDetails9Di_0001 = structure(c(NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_), label = "TloCriminal1CrimeDetails9DispositionDate", format.sas = "MMDDYY", class = "Date"), 
    TloCriminal1CrimeDetails10D_0001 = structure(c(NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_), label = "TloCriminal1CrimeDetails10DispositionDate", format.sas = "MMDDYY", class = "Date")), row.names = c(NA, 
-8L), class = c("tbl_df", "tbl", "data.frame"), label = "CRIME_CHK")

附言

或者它可能在 TypeScript 中有类似文字类型的东西?我实际上并不需要枚举,只要编译器能够在编译时检查值,字符串值就可以了,就像在 TypeScript 中一样。

enum class Color { red, blue, green }

data class Shape(val color: Color)

fun main() {
    println(Shape(color = red))
}

1 个答案:

答案 0 :(得分:4)

是的,如果您导入它,您可以使用没有类前缀的枚举:

import Color.*

enum class Color { Red, Blue, Green }

val color = Red

注意:按照惯例,enum names 应该以大写字母开头。

编辑

首先,我认为当您在同一个文件中但在不同的类或顶级函数中使用枚举时,可以不导入它,但您仍然必须导入它 - 以避免类前缀。