× C … 掛け算なので直積 • Kotlin でいうとdata class • 要はデータクラス 年齢 星座 (蟹, 20) (双子, 30) (射手, 40) (山羊, 20) data class PersonInfo( val constellation: String, val age: Int )
since: Int = -1 override fun setData(a: Int, b: Int) { since = a } }, ACTIVE_BETWEEN { var start: Int = -1 var end: Int = -1 override fun setData(a: Int, b: Int) { start = a end = b } }; abstract fun setData(a: Int, b: Int) } enumで直積の性質を表現するのは無理がある。 以下のようにだいぶ無理があるコードができあがる。var使っとるわ int b を無理やり入れないとだわで、どう考えてもスマートじゃない fun main() { val y1 = YearsActive.STILL_ACTIVE y1.setData(2005, 9999) // 9999ってなんだ・・・ val y2 = YearsActive.ACTIVE_BETWEEN y2.setData(1990, 2000) println(y1) // STILL_ACTIVE println(y2) // ACTIVE_BETWEEN }