Предположим, у меня многомерный массив как член класса и множество методов, которые проходят через каждый элемент массива, а затем работают с ним. Код может выглядеть следующим образом:Код повторного использования для циклирования через многомерный массив
public class Baz {
private Foo[][] fooArray = new Foo[100][100];
public Baz() {
for (int i = 0; i < fooArray.length; i++) {
for (int j = 0; j < fooArray[i].length; j++) {
// Initialize fooArray
}
}
}
public void method1() {
for (int i = 0; i < fooArray.length; i++) {
for (int j = 0; j < fooArray[i].length; j++) {
// Do something with fooArray[i][j]
}
}
}
public void method2() {
for (int i = 0; i < fooArray.length; i++) {
for (int j = 0; j < fooArray[i].length; j++) {
// Do something else with fooArray[i][j]
}
}
}
// and so on
}
Теперь, так как код цикла всегда то же самое, только операция в пределах изменения цикла, есть ли способ, код зацикливание может быть каким-то образом переработан в отдельный метод? Было бы хорошо, чтобы быть в состоянии сделать
doInLoop(functionToExecute());
Что бы ближайшей заменой делать что-то вроде этого, если это вообще возможно?
@Skippy Я не знаком с драйверами на python, но я уверен, что этот прецедент будет покрыт генераторами и инвертией управления, который они предлагают. –
@Skippy На каждом современном языке, кроме Java, функции лямбда и замыкания являются основным элементом. –
@Skippy Нет, C не прекращается вообще. Случилось так, что его * область * сузилась только к низкоуровневым подпрограммам. Но он не сталкивается с какой-либо оппозицией в этой области, и это, вероятно, будет оставаться таким образом в течение по крайней мере десятилетия. –