Как я могу написать функцию более высокого порядка, например карту или сокращение?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как я могу написать функцию более высокого порядка, например карту или сокращение?

Сообщение Anonymous »

Я прочитал статью Джоэла о программном обеспечении об идее использования функций более высокого порядка для значительного упрощения кода за счет использования карт и сокращений. Он упомянул, что это сложно сделать на Java. Статья: http://www.joelonsoftware.com/items/2006/08/01.html

Пример из статьи ниже циклически проходит по массиву и использует функцию fn, которая была передана в качестве аргумента для каждого элемента массива:

Код: Выделить всё

function map(fn, a)
{
for (i = 0; i < a.length; i++)
{
a[i] = fn(a[i]);
}
}
На практике это будет вызываться аналогично следующему:

Код: Выделить всё

map( function(x){return x*2;}, a );
map( alert, a );
В идеале я хотел бы написать функцию карты для работы с массивами или коллекциями любого типа, если это возможно.

Я искал в Интернете, и мне было трудно найти ресурсы по этому вопросу. Во-первых, возможны ли в Java анонимные функции? Возможно ли это сделать по-другому? Будет ли он доступен в будущей версии Java? Если возможно, как я могу это сделать?

Я думаю, что если это невозможно в Java, то существует какой-то «шаблон»/метод, который люди используют для достижения того же эффекта, поскольку я полагаю, что анонимные функции — очень мощный инструмент в мире программного обеспечения. Единственный похожий вопрос, который мне удалось найти, заключался в следующем: Java-генерики - реализация функций более высокого порядка, таких как карта, и для меня это не имеет абсолютно никакого смысла.

Подробнее здесь: https://stackoverflow.com/questions/578 ... -or-reduce
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»