(也想不出更好的標題,隨意編輯它來描述這個問題好標題)我有以下方法停止迭代後返回true?
:
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開始。
(試圖把它形容盡我的能力,但它似乎仍然還不是很清楚)
這是C#在Unity3D。
「這裏發生的事情是,返回true後,它會一直迭代」 - 你確定*這就是發生了什麼? – AakashM
我會做一次複查,但我很確定那就是發生了什麼。 –
一旦你到達'return'語句,你將離開方法的範圍,並且'foreach'將不會繼續迭代。如果這是你認爲你正在經歷的事情,我懷疑這個錯誤是在別的地方比在這個方法中... – madd0