我的Flutter项目中有一个Dart枚举,如下所示:
dart prettyprint-override">enum RepeatState {
playSongOnce,
repeatSong,
repeatPlaylist,
}
如果我有一些随机枚举状态,如RepeatState.repeatSong
,我如何迭代到下一个枚举(而不需要做一些事情,如用开关语句映射它们)?
我在这个,这个和这个的帮助下找到了答案,所以我把它贴在下面。
enum Fruites { Mango, Banana, Cherry, Avacado, Papaya }
void main() {
Fruites.values.forEach((name) {
print(name);
});
}
输出:
Fruites.Mango
Fruites.Banana
Fruites.Cherry
Fruites.Avacado
Fruites.Papaya
只取一部分的名字
print(name.toString().split('.').elementAt(1));
输出:
Mango
Banana
Cherry
Avacado
Papaya
给定这样一个枚举,
enum MyEnum {
horse,
cow,
camel,
sheep,
goat,
}
您可以使用value
属性遍历枚举的值:
for (var value in MyEnum.values) {
print(value);
}
// MyEnum.horse
// MyEnum.cow
// MyEnum.camel
// MyEnum.sheep
// MyEnum.goat
每个值都有一个索引:
int index = MyEnum.horse.index; // 0
您可以使用下标符号将索引转换回枚举:
MyEnum value = MyEnum.values[0]; // MyEnum.horse
结合这些事实,您可以循环遍历枚举的值来查找下一个值,如下所示:
MyEnum nextEnum(MyEnum value) {
final nextIndex = (value.index + 1) % MyEnum.values.length;
return MyEnum.values[nextIndex];
}
即使索引位于枚举值列表的末尾,使用模运算符也可以处理:
MyEnum nextValue = nextEnum(MyEnum.goat); // MyEnum.horse
问题内容: 我需要遍历一个post数组并对其求和。 但是我不知道从哪里开始。 问题答案: 这是您的操作方式: 这会照顾传入的变量和数组。
我正在MST上的CLRS中尝试ch23,这里有一个问题: 给定一个图G和一个最小生成树T,假设我们减少不在T中的一条边的权重。给出了在修改图中求最小生成树的算法。 我找到的一个解决方案是在中添加此新更改的边,然后在T中创建一个简单的循环,遍历此循环并删除此循环中的最大权重边,瞧,找到了新更新的MST! 我的问题是,如何在这个简单循环中只遍历节点?因为如果我在中从这个新添加的边的一个endpoint
对于这个问题,我需要用一个公式求出两个点之间的距离,给定两个点的坐标和值p。我让程序为一个输入行工作,但我希望用户能够输入多行,并让程序循环通过它们。例如: 1.0 1.0 2.0 2.0 1.0 我对java相当陌生,还在学习,所以我很感激我能得到的任何帮助。提前谢了。
问题内容: 因此,我以为我可以像普通对象一样遍历localStorage,因为它具有长度。我该如何循环? 如果我这样做,则返回正确。所以我认为循环会起作用。 我在想类似的东西: 但无济于事。有任何想法吗? 我的另一个想法是 在其中工作。 问题答案: 您可以使用该方法。 返回第一个键(顺序是实现定义的,但是在您添加或删除键之前是恒定的)。 如果顺序很重要,则可以存储JSON序列化数组: 规范草案声称
在给定的数组中,我想计算左边唯一的连续值,这些值小于或等于每个值。 例如在下面的数组中,第一个索引值是100,所以没有比它更小的值,它将是1。对于值70,有60比它小,所以计数是2,依此类推。 注意:这应该使用stack来完成(这是一个stack实践问题)。 我的方法是: 我试图用这种方式解决: 在数组中运行循环,每次向堆栈添加数组值 问题:现在的问题是:因为它第一次会正常工作,但下一次不会。 问
我有一个简单的枚举,我想迭代一下。为此,我采用了顺序和迭代器协议,如下面的代码所示。顺便说一句,这可以复制/粘贴到Xcode 8中的游乐场。 但是for in循环生成错误消息“Type”节。Type不符合协议“Sequence”。协议一致性在我的扩展中;那么,这个代码有什么问题? 我知道还有其他方法可以做到这一点,但我想知道这种方法有什么问题。 谢谢