![]() |
1
3
不是那个
类型
它是等幂的-这甚至没有多大意义;你
可以
意思是不变的,但这还不清楚。是那个
我想说的是
通常
在这种情况下,我可以设想一些特殊的情况,在这些情况下,有一个非等幂项是有意义的
当然,这种类型和方法应该非常仔细地记录下来,但我认为它们是合理的。 |
![]() |
2
3
这是一个古老的讨论,据我所知,没有共同的共识。
请不要混淆(运行时)Duck类型的概念和滥用支持的编译器
另一个你似乎混淆的概念是等幂与不变性。根据您的措辞,您试图描述第二个,这意味着提供枚举器的对象在枚举期间被修改。另一方面,等幂意味着您的枚举器,当调用两次时将产生相同的结果。 现在我们已经清楚了这一点,您需要仔细决定IEnumerable操作应该支持的语义。某些类型的枚举很难使等幂(即涉及缓存),通常可分为以下类别之一:
另一方面,这只解释了“源”操作。如果使用枚举数实现筛选或转换操作,则应始终尝试使它们成为等幂。 |
![]() |
3
0
似乎你想要一个队列类,从中你可以在一个漂亮的一行程序中对所有项目进行出列。
这个想法本身没什么不对的,我只是怀疑你是否喜欢特别使用
为什么不简单地编写一个更明确的方法呢?例如,
例子:
(请注意,以上内容甚至可能是
可拓方法
,如果它字面上表示
只有
除了已经由
这样你仍然可以得到看起来“干净”的代码,我怀疑你在追求,没有(潜在的)非等幂的混淆
|
![]() |
4
0
我建议在集合上使用ForEach不应该更改它,除非集合类型的名称暗示这将发生。我认为的问题是,如果执行一个方法将集合消费到可枚举的对象中(例如,允许“MyThing.DequeueAsEnum中的每个Foo”),应该返回什么。如果DequeueAsEnum返回一个iEnumerable,那么有人可能会希望使用“Dim myIEnumerable As iEnumerable=MyThing.DequeueAsEnum”逃脱惩罚,然后在两个不相交的循环中为每个循环使用myIEnumerable。如果DequeueAsEnum返回一个类型EnumerableOnlyOnce,那么它的返回应该只枚举一次就更清楚了。可以肯定的是,新C语言和VB.NET方言中隐式类型的存在使得当某人不应该把函数返回给变量时,有可能更大的可能性,但我不知道如何防止。 顺便说一句,在很多情况下,防止类引用存储到变量中是有帮助的;是否有任何方法可以声明类,使外部代码可以使用该类类型的表达式,但不能声明其变量? |
|
user9115052 · Python3-将枚举转换为不同的数据类型 6 年前 |
![]() |
Guy s · 按单元格值枚举python矩阵 7 年前 |
![]() |
Mickd94 · 如何实现枚举类型的特定方法 9 年前 |