繁体   English   中英

如何迭代Google Closure中的枚举值?

[英]How do I iterate over enum values in Google Closure?

我正在尝试找到迭代Google Closure中定义的枚举上的所有值的最佳方法。 假设我定义了以下枚举:

/**
 * @enum {number}
 */
sample.namespace.Fruit = {
  Orange: 0,
  Apple: 1,
  Banana: 2
};

现在,我看到这样做的最好方法是这样的:

for (var key in sample.namespace.Fruit) {
    var fruit = /** @type {sample.namespace.Fruit} */ (sample.namespace.Fruit[key]);
    // Make a smoothie or something.
}

我觉得读书很痛苦。 我正在列出一个名称空间三次,只是为了让编译器出现。 我应该使用另一种迭代技术吗? 这是完成这种迭代形式的最佳方法吗?

您可以使用goog.object.forEach来避免名称空间重复。

goog.object.forEach(sample.namespace.Fruit,
                    function(value, key, allValues) {
                      // Make some delicious fruit jellies or something.
                    });

作为旁注,在大多数情况下,您希望避免为@enums使用字符串键,以便编译器可以重命名这些键。

您可以使用for循环迭代对象..

var obj = sample.namespace.Fruit;

for(var key in obj) {
    console.log("Fruit :: " + key + " -- " + obj[key])
}

检查小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM