我遇到了以下Kotlin代码的一个枚举:
enum class Section(val position: Int, val textKey: Int, val fragment: Fragment) {
GUIDE(0, R.string.main_pager_guide, QotGuideFragment()),
LEARN(1, R.string.main_pager_learn, QotLearnFragment()),
ME(2, R.string.main_pager_me, QotToBeVisionFragment()),
PREPARE(3, R.string.main_pager_prepare, QotPrepareFragment()),
;
}
但是,当我查看有关枚举的Kotlin文档时,我没有看到任何显示这种语法的东西。该行:
GUIDE(0,R.string.main_pager_guide,QotGuideFragment())
我不明白这三个参数是如何使用的。另外,枚举类Section显示了3个似乎未使用的构造函数参数。
有关枚举的官方文档位于:
答案 0 :(得分:1)
来自https://kotlinlang.org/docs/reference/enum-classes.html:
每个枚举常量都是一个对象
所以GUIDE
是Section
类的实例,表示对象初始化为
GUIDE(0, R.string.main_pager_guide, QotGuideFragment())
您可以获取初始化GUIDE
的值,如下所示:
val guidePosition = Section.GUIDE.position
val guideTextKey = Section.GUIDE.textKey
val guideFragment = Section.GUIDE.fragment
答案 1 :(得分:0)
通常您的枚举会像这样
enum class Section() {
GUIDE,
LEARN,
ME,
PREPARE
}
没有任何参数
但是在您的示例中,枚举的基本构造函数也将参数设置为属性
enum class Section(**val** position: Int, **val** textKey: Int, **val** fragment: Fragment)
在构造函数中使用关键字val设置为类的属性
然后有
GUIDE(0, R.string.main_pager_guide, QotGuideFragment()),
LEARN(1, R.string.main_pager_learn, QotLearnFragment()),
ME(2, R.string.main_pager_me, QotToBeVisionFragment()),
PREPARE(3, R.string.main_pager_prepare, QotPrepareFragment())
对于GUIDE
0->位置,R.string.main_pager_guide-> textKey和QotGuideFragment->片段