0

在java中我们可以很容易地做下面的枚举

public enum Food {
    HAMBURGER(7), FRIES(2), HOTDOG(3), ARTICHOKE(4);

    Food(int price) {
        this.price = price;
    }

    private final int price;

    public int getPrice() {
        return price;
    }
}

资源

但我想做同样的枚举,但据我所知,我找不到任何方法在目标 C 中做构造函数,就像我们在 java 中所做的那样。

如何在目标 c 中实现相同的目标?

4

1 回答 1

3

(Objective-)C 枚举是非常基础的。

它们不是由文字集合定义的类型,例如在 Ada 或 Pascal 中,尽管它们可能看起来是;它们也不是标记的不相交联合,例如在 Swift 或 Java 中。

相反,它们只是常量的集合,通常是int类型,尽管可以将其更改为其他整数类型,它们可以或多或少地互换用作int(或任何整数类型)。

但是,如果您的枚举与上面描述的一样,那么您可以使用 C 风格的枚举来实现类似的效果:

typedef enum
{
   HAMBURGER = 7,
   FRIES = 2,
   HOTDOG = 3,
   ARTICHOKE = 4
} Food;

这为您提供了一个类型,Food,具有四个文字值HAMBURGER ;和赋值、相等、switch语句等都按预期工作。例如:

Food item = HOTDOG;
if (item == FRIES) ...
switch (item) { case ARTICHOKE: ...

您还可以将文字用作整数来获取“价格”,例如

int itemPrice = (int)item;

可以在基础类型中为多个文字赋予相同的值,因此您可以拥有具有相同价格的不同项目。

鉴于此,除了声明enum. 但是,如果您使用 Java 枚举的全部功能,则必须定义自己的class/struct和方法/函数来实现所需的功能。

高温高压

于 2018-02-03T17:21:55.420 回答