在我编写的几乎所有代码中,我经常要处理集合上的集合约简问题,这些问题最终会导致集合内部出现幼稚的“ if”条件。这里有一个简单的例子:
for(int i=0; i<myCollection.size(); i++)
{
if (myCollection[i] == SOMETHING)
{
DoStuff();
}
}
使用函数式语言,我可以通过将集合简化为另一个集合(很容易)来解决这个问题,然后在简化后的集合上执行所有操作。在伪代码中:
newCollection <- myCollection where <x=true
map DoStuff newCollection
在其他 C 语言变体中,比如 C # ,我可以用一个 where 子句,比如
foreach (var x in myCollection.Where(c=> c == SOMETHING))
{
DoStuff();
}
或者更好(至少在我看来)
myCollection.Where(c=>c == Something).ToList().ForEach(d=> DoStuff(d));
诚然,我正在做很多范式混合和主观/基于观点的风格,但我不能不觉得我错过了一些真正基本的东西,可以让我用 C + + 使用这个首选技术。有人能告诉我吗?