は、私は次のメソッドを持っている真を返した後に反復を停止しますか?
(より良い質問を記述するタイトルにそれを編集すること自由に感じ、より良いタイトルを考えることができませんでした):
bool CalculateNewState(int adjacent, bool currentState)
{
if (currentState == true)
{
foreach (int n in liveRule)
{
if (adjacent == n)
{
return true;
}
}
return false;
}
else
{
foreach (int n in becomeAliveRule)
{
if (adjacent == n)
{
return true;
}
}
return false;
}
}
これはgame of lifeクローンのためです。私が実装したいのは、ユーザーが自分のルールを作ることができるということです。
bool currentState
は、細胞が生存しているかどうかをメソッドに伝えます。 int adjacent
は、セルにいくつの生きている近隣があるかをメソッドに通知します。
私がこれで達成したいのは、ユーザーが言うとき: 2,3 and 5 neighbors keep the cell alive
です。 2,3 and 5
を保持する配列(liveRule
)を反復処理します。一致が発生した場合はtrue
、それ以外の場合はfalse
を返します。
ここで起こるのは、trueを返すと、繰り返し処理を継続し、最終的にliveRule
の要素が一致するかどうかを返します。
一致が発生した後に反復処理を停止するには、何が必要ですか?
私はこの問題に間違ったアプローチをしている可能性があります。私は提案hereから始めました。これはUnity3DでのC#で
は(自分の能力を最大限にそれを記述しようとしたが、それはまだかなり不明確と思われます)。
"ここで何が起きるかは、真を返すと、反復し続けます" - あなたは確信していますか?起こっていますか? – AakashM
私は二重チェックをしますが、私はそれが起こっていることを確信しています。 –
'return'ステートメントに達すると、メソッドのスコープを離れるので、' foreach'が反復処理を続ける方法はありません。これがあなたが経験していると思われるものだとすれば、私はこの方法よりもバグが他の場所にあると考えています... – madd0