0

这是非特定语言的,但我将使用C#. 我经常面临这样一个问题,即我需要在至少一个参数的任何给定迭代中添加一个parameterobject并且我总是想出一个蹩脚的临时性listarray某种伴随着保持它正确相关的问题.

因此,请耐心等待以下示例:

  • 有没有更简单更好的方法可以在升 C 中做到这一点?

    List<String> storeStr;
    
    void AssignStringListWithNewUniqueStr (List<String> aList) {
        foreach (String str in aList) {
            storeStr.add(str);
            str = AProcedureToGenerateNewUniqueStr();
        }
    }
    
    void PrintStringListWithNewUniqueStr (List<String> aList) {
        int i = 0;
        foreach (String str in aList) {
            print(str + storeStr[i]);
            i++;
        }
    }
    

请注意,仅因为我正在迭代未更改aList. 当询问“更简单和更好的方法”时,我的意思是它还应该确保storeStr始终与它的等价物相关联aList,同时保持它尽可能简短和简单。List也可以是任何类型的arrayor object


  • 是否有任何语言可以实现这样的事情?它必须给出与上述相同的结果。

    IterationBound<String> storeStr;
    
    void AssignStringListWithNewUniqueStr (List<String> aList) {
        foreach (String str in aList) {
            storeStr = str;
            str = AProcedureToGenerateNewUniqueStr();
        }
    }
    
    void PrintStringListWithNewUniqueStr (List<String> aList) {
        foreach (String str in aList) {
            print(str + storeStr);
        }
    }
    

在这种情况下,虚构的“ IterationBound”种类将保证列表和新参数之间的相关性(在某种程度上,就像垃圾收集器保证分配一样)。它会以某种方式注意到它是在迭代中创建的,并将其自身与该特定索引相关联(当然,无论那里的语法是否会更丑陋)。然后,当它在另一个迭代中再次回调并且它已经创建或存储在该特定索引中时,它将检索该迭代的这个特定值。

4

2 回答 2

2

为什么不简单地将您的可枚举项投射到新的形式中呢?

var combination = aList
      .Select(x => new { Initial = x, Addition = AProcedureToGenerateNewUniqueStr() })
      .ToList()
      .ForEach(x =>
           { 
               print(x.Initial + x.Addition);
           });

这样,您就可以使每个元素与新数据相关联。

于 2012-05-04T17:19:01.020 回答
2
aList.ForEach(x => print(x + AProcedureToGeneratorNewUniqueString()));
于 2012-05-04T17:20:58.183 回答