Questions tagged «enumeration»

枚举值(例如,从某些集合中)的过程。


6
Java枚举方法-返回相反方向的枚举
我想声明一个枚举Direction,它具有一个返回相反方向的方法(以下语法不正确,即,不能实例化枚举,但它说明了我的观点)。这在Java中可行吗? 这是代码: public enum Direction { NORTH(1), SOUTH(-1), EAST(-2), WEST(2); Direction(int code){ this.code=code; } protected int code; public int getCode() { return this.code; } static Direction getOppositeDirection(Direction d){ return new Direction(d.getCode() * -1); } }
113 java  enums  enumeration 

6
(如何)我可以计算枚举中的项目?
当我有类似的东西时,我想到了这个问题 enum Folders {FA, FB, FC}; 并希望为每个文件夹创建一个容器数组: ContainerClass*m_containers[3]; .... m_containers[FA] = ...; // etc. (使用地图这是更优雅的使用方法:std::map<Folders, ContainerClass*> m_containers;) 但是回到我的原始问题:如果我不想对数组大小进行硬编码怎么办,有没有办法确定文件夹中有多少个项目?(无需依赖于例如FC列表中的最后一项,ContainerClass*m_containers[FC+1]如果我没有记错的话,这将允许类似的操作。)
98 c++  count  enumeration 

11
.NET库中是否有针对Month的预定义枚举?
我正在寻找.net框架中是否存在几个月的官方枚举。 在我看来,有一个可能是因为月使用的普遍程度,以及.net框架中还有其他这样的枚举。 例如,有一个星期几的枚举System.DayOfWeek,其中包括星期一,星期二等。 我想知道一年中的几个月(即一月,二月等)是否有一个? 有人知道吗?

8
枚举是单数还是复数?
枚举使用单数还是复数?我认为在声明中使用复数是最有意义的 enum Weekdays { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday } ...但是我认为使用类型时使用单数会更有意义,例如 Weekday firstDayOfWeek = Weekday.Monday; 我在某处阅读了有关使用带枚举的单数正则枚举和复数形式的建议,但我想听听其他优点和缺点。

1
enumerateObjectsUsingBlock的BOOL * stop参数是什么?
enumerateObjectsUsingBlock:最近,我为满足快速枚举的需求一直在使用很多东西,而且我很难理解BOOL *stop枚举块中的用法。 在NSArray类引用状态 stop:对布尔值的引用。该块可以将值设置为,YES以停止对该数组的进一步处理。该stop参数是唯一的参数。您只能将此Boolean设置YES为Block内。 因此,当然可以在块中添加以下内容以停止枚举: if (idx == [myArray indexOfObject:[myArray lastObject]]) { *stop = YES; } 据我所知,不明确设置*stop为YES不会产生任何负面影响。枚举似乎会自动在数组末尾停止。那么,使用代码*stop块真的有必要吗?

9
在C#中枚举时从List <T>中删除项目的智能方式
我有一个经典的案例,尝试在循环中枚举项目时从集合中删除它: List&lt;int&gt; myIntCollection = new List&lt;int&gt;(); myIntCollection.Add(42); myIntCollection.Add(12); myIntCollection.Add(96); myIntCollection.Add(25); foreach (int i in myIntCollection) { if (i == 42) myIntCollection.Remove(96); // The error is here. if (i == 25) myIntCollection.Remove(42); // The error is here. } 在发生更改后的迭代开始时,InvalidOperationException会抛出an ,因为枚举器不喜欢基础集合的更改。 我需要在迭代时对集合进行更改。有许多模式可以用来避免这种情况,但是似乎没有一个好的解决方案: 不要在此循环内删除,而要保留一个单独的“删除列表”,在主循环后进行处理。 通常,这是一个很好的解决方案,但就我而言,我需要立即“等待”该项目,直到真正删除该项目的主循环改变了我的代码的逻辑流程。 无需删除该项目,只需在该项目上设置一个标志并将其标记为非活动即可。然后添加模式1的功能以清理列表。 这将满足我的所有需求,但是这意味着每次访问一个项目时,为了检查非活动标志,必须更改许多代码。按我的喜好,这太过分了。 以某种方式将模式2的思想纳入源自的类中List&lt;T&gt;。此超级列表将处理非活动标志,事实结束后的对象删除,也不会向枚举使用者显示标记为非活动的项目。基本上,它只是封装了模式2(以及随后的模式1)的所有思想。 是否存在这样的类?有人为此提供代码吗?或者,还有更好的方法? 有人告诉我,访问myIntCollection.ToArray()而不是myIntCollection可以解决问题,并允许我在循环内删除。 对我来说,这似乎是一种糟糕的设计模式,或者还好吗? 细节: 该列表将包含许多项目,我将仅删除其中一些。 …
86 c#  list  foreach  enumeration 

9
在Swift枚举期间从数组中删除?
我想枚举Swift中的数组,并删除某些项目。我想知道这样做是否安全,如果不能,我应该如何实现这一目标。 目前,我会这样做: for (index, aString: String) in enumerate(array) { //Some of the strings... array.removeAtIndex(index) }

10
使用Java泛型迭代枚举值
我试图找到一种在使用泛型时遍历枚举值的方法。不确定如何执行此操作或不确定是否可行。 下面的代码说明了我想做什么。请注意,代码T.values()在以下代码中无效。 public class Filter&lt;T&gt; { private List&lt;T&gt; availableOptions = new ArrayList&lt;T&gt;(); private T selectedOption; public Filter(T selectedOption) { this.selectedOption = selectedOption; for (T option : T.values()) { // INVALID CODE availableOptions.add(option); } } } 这是实例化Filter对象的方法: Filter&lt;TimePeriod&gt; filter = new Filter&lt;TimePeriod&gt;(TimePeriod.ALL); 枚举定义如下: public enum TimePeriod { ALL("All"), FUTURE("Future"), NEXT7DAYS("Next 7 …

16
枚举或列出[您在这里喜欢的语言]程序中的所有变量[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 7年前关闭。 改善这个问题 上周一个朋友问我如何枚举或列出程序/函数/等中的所有变量。出于调试目的(本质上是获取所有内容的快照,以便您可以看到设置了哪些变量,或者根本没有设置它们)。我环顾了一下,发现了使用Python的相对不错的方法: #!/ usr / bin / python foo1 =“你好世界” foo2 =“ bar” foo3 = {“ 1”:“ a”, “ 2”:“ b”} foo4 =“ 1 + 1” 对于dir()中的名称: myvalue = eval(名称) 打印名称,“是”,类型(名称),“和等于”,myvalue 这将输出类似: __builtins__是&lt;type'str'&gt;并且等于&lt;module'__builtin__'(内置)&gt; __doc__是&lt;type'str'&gt;,等于无 __file__是&lt;type'str'&gt;,等于./foo.py __name__是&lt;type'str'&gt;,等于__main__ foo1是&lt;type'str'&gt;,等于Hello world foo2是&lt;type'str'&gt;,等于bar foo3是&lt;type'str'&gt;,等于{'1':'a','2':'b'} foo4是&lt;type'str'&gt;,等于1 + 1 到目前为止,我已经在PHP中找到了一种局部方法(由link text提供),但是它只列出了所有变量及其类型,而不列出内容: &lt;?php //创建一些变量 …

7
foreach标识符和闭包
在接下来的两个摘要中,第一个是安全的还是第二个必须做? 安全地说,每个线程是否保证从创建线程的同一循环迭代中调用Foo上的方法? 还是必须将引用复制到新变量“ local”到循环的每次迭代中? var threads = new List&lt;Thread&gt;(); foreach (Foo f in ListOfFoo) { Thread thread = new Thread(() =&gt; f.DoSomething()); threads.Add(thread); thread.Start(); } -- var threads = new List&lt;Thread&gt;(); foreach (Foo f in ListOfFoo) { Foo f2 = f; Thread thread = new Thread(() =&gt; f2.DoSomething()); threads.Add(thread); thread.Start(); …

9
迭代器与枚举器之间的区别
.NET 3.5作业的面试问题是“迭代器和枚举器有什么区别”? 这是要做出的核心区分,对于LINQ等等。 无论如何,有什么区别?我似乎在网上找不到可靠的定义。没错,我可以找到两个术语的含义,但是得到的答案略有不同。面试的最佳答案是什么? IMO迭代器在集合上“迭代”,并且枚举器提供了迭代功能,但这必须调用。 另外,据说使用yield关键字可以保存状态。这个状态到底是什么?有这种好处发生的例子吗?

11
在“ foreach”循环中修改列表的最佳方法是什么?
C#/ .NET 4.0中的一项新功能是您可以在foreach不更改异常的情况下在中更改可枚举。有关此更改的信息,请参见Paul Jackson的博客条目“并发的有趣副作用:枚举时从集合中删除项目”。 进行以下操作的最佳方法是什么? foreach(var item in Enumerable) { foreach(var item2 in item.Enumerable) { item.Add(new item2) } } 通常,我会IList在末尾使用用作缓存/缓冲区foreach,但是还有更好的方法吗?

7
迭代Java 8中的枚举
是否可以Enumeration使用Lambda表达式进行迭代?以下代码段的Lambda表示形式是什么: Enumeration&lt;NetworkInterface&gt; nets = NetworkInterface.getNetworkInterfaces(); while (nets.hasMoreElements()) { NetworkInterface networkInterface = nets.nextElement(); } 我没有在其中找到任何信息流。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.