enums - Kotlin Enums:引用从它调用的任何 Enum 对象的函数
问题描述
我正在尝试print()
从枚举中的对象编写一个可以如下调用的枚举函数Molecule
:
Molecule.HYDROGEN_MOLECULE.print()
myMolecule.print()
我不想为函数提供特定的枚举对象:
Molecule.print(Molecule.HYDROGEN)
但是,当我在 中创建函数时Molecule
,当我尝试引用 的列表时出现错误MolecularFragment
。
我需要在 print() 中使用什么语法来myMolecule.print()
引用该MolecularFragment
特定枚举对象的列表?
enum class Molecule (val MolecularFragments : List<MolecularFragment> = emptyList()) {
HYDROGEN_MOLECULE(listOf(MolecularFragment.H2)),
WATER_MOLECULE(listOf(MolecularFragment.H2O)),
// ...
HEXANE_MOLECULE(listOf(MolecularFragment.CH3, MolecularFragment.CH2));
fun print() {
**var x : List<MolecularFragment> = Molecule.MolecularFragments**
x.forEach() {
println("$it")
}
println(" --- ${Molecule.toString()}")
}
}
解决方案
我想这正是你想要的:
enum class MolecularFragment { H2, H2O, CH3, CH2 }
enum class Molecule (val molecularFragments : List<MolecularFragment> = emptyList()) {
HYDROGEN_MOLECULE(listOf(MolecularFragment.H2)),
WATER_MOLECULE(listOf(MolecularFragment.H2O)),
HEXANE_MOLECULE(listOf(MolecularFragment.CH3, MolecularFragment.CH2));
fun print() {
molecularFragments.forEach(::println)
println("${this::class.java.toString()}")
}
}
fun main(args: Array<String>) {
Molecule.HYDROGEN_MOLECULE.print()
}
几点注意事项:
- 您以双星号突出显示的行甚至没有编译。
- 您可以使用函数引用来打印元素。
- 您不需要
molecularFragments
先将属性放入变量中。 - 下次,请指定
MolecularFragment
以便代码可以立即运行。
推荐阅读
- java - 新手使用 Scanner 对象进行拼写检查
- javascript - 使用 lodash _.sortby 对包含详细信息的联系人数组进行排序并最后发送空值?
- xml - 访问杨列表中叶子的xpath是什么?
- java - Java根据条件向类添加注释
- go - 运行 make 后出现意外的目录布局
- python - 输出结果到 csv 文件 - TypeError writerow() 接受 2 个位置参数,但给出了 5 个
- sql - 窗口函数
- html - 媒体查询在手机上不起作用
- javascript - 为什么第一个程序有效而第二个程序无效?
- wordpress - 年龄限制可变产品woocommerce?