これは言語固有ではありませんが、 の例を使用しC#
ます。多くの場合、少なくとも 1 つのパラメーターの特定の反復内に を追加する必要があるという問題に直面しparameter
ます。適切に相関を維持するという問題に付随して、常に不十分な一時的なものまたは何らかの種類のものobject
を考え出す必要があります。 .list
array
そのため、以下の例についてはご容赦ください。
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
常に同等の onと関連付けられるようにする必要があることを意味します。aList
は、任意の種類のまたはList
である可能性もあります。array
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
" 種類は、リストと新しいパラメーターの間の相関を保証します (ガベージ コレクターが割り当てを保証するのと同じように)。それが反復内で作成されたことに何らかの形で気づき、その特定のインデックスに自分自身を関連付けます (もちろん、構文が醜いかどうかは関係ありません)。次に、別の反復で再度呼び出され、その特定のインデックスに既に作成または格納されている場合、その反復のこの特定の値を取得します。