【问题标题】:Enumeration of mixed values (constants and data class)混合值的枚举(常量和数据类)
【发布时间】:2020-09-26 15:12:45
【问题描述】:

我有以下 data class 代表红色/绿色/蓝色值的颜色:

data class HexColor(
  val red:   Byte,
  val blue:  Byte,
  val green: Byte
)

我正在尝试使用定义的颜色(REDYELLOWPURPLE、...)其他红色/绿色/蓝色可能性(使用HexColor) :

enum class Color {
  RED,
  YELLOW,
  PURPLE,
  // ...
  HEX_COLOR: HexColor // how to represent this ?
}

前面的代码没有编译,只是展示了我要实现的大致思路。

如何定义我的enum 以将Color 表示为不带参数的定义值(例如YELLOW 等常量)和HexColor(带参数的数据类)。有可能吗?

这个想法是像这样使用,或者类似的东西:

val red = Color.RED
val blue = Color.HEX_COLOR(0, 255, 0)

【问题讨论】:

    标签: kotlin enums


    【解决方案1】:

    使用枚举类是不可能的(所有枚举实例都需要在编译时定义),但你可以尝试这样的事情:

    class Color private constructor(val r: Float, val g: Float, val b: Float) {
        companion object {
            val RED = Color(1.0f, 0.0f, 0.0f)
            val GREEN = Color(0.0f,1.0f, 0.0f)
            val BLUE = Color(0.0f, 0.0f, 1.0f)
            fun HEX_COLOR(r: Float, g: Float, b: Float) = Color(r, g, b)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-04-01
      • 2014-07-28
      • 1970-01-01
      • 1970-01-01
      • 2015-08-21
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2014-09-26
      相关资源
      最近更新 更多