gpt4 book ai didi

enums - Kotlin枚举:该函数引用从其调用的任何枚举对象

转载 作者:行者123 更新时间:2023-12-02 13:37:59 25 4
gpt4 key购买 nike

我正在尝试从枚举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,以便代码可以立即运行。
  • 关于enums - Kotlin枚举:该函数引用从其调用的任何枚举对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51653213/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com