`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Андрей Зубинский

А вот и первые кандидаты на замыкания в Java 7

+22
голоса

Давеча (а именно, 27.05.2010) Oracle опубликовала первые два варианта реализации замыканий (closure) в Java 7. Отличия между вариантами синтаксические и, можно сказать, минимальные – по сути, наличием двух вариантов рассматривается необходимость в операторе return в теле функции-замыкания.

Общий синтаксис объявления замыкания таков:

#(список_параметров){тело_замыкания}

# в нём означает лямбда-функцию.

Вызов этой функции осуществляется привычным в контексте классов и методов оператором «.» :

#(список_параметров){тело_замыкания}.(список_передаваемых_параметров)

Для переменных, способных хранить замыкания (лямбда-выражения), предусмотрен и соответствующий синтаксис, позволяющий Java проверять тип возвращаемого замыканием значения:

#тип_возвращаемого_значения() имя = #(список_параметров){тело_замыкания} ;

Например (подробные примеры есть в тестах):

#(){3} или во втором варианте #(){return 3;} – лямбда-функция, подставляющая вместо своего вызова значение 3, соответственно после исполнения этих двух строк:

int Val1 = #(){3}.() ;

и

int Val2 =#(){ return 3; } ;

значения Val1 и Val2 будут равны 3.

И так далее (речь идёт о параметрах), ничего страшного в этом синтаксисе я лично не вижу, он вполне вменяемый.

О поддержке механизма лямбда-исчисления можно почитать в этой ветке, я нагружать деталями не буду.

Ну что же, это весьма неплохо. Особенно если учесть тот факт, что в Java 7 замыкания ещё не так давно не ожидались.

+22
голоса

Напечатать Отправить другу

Читайте также

Хех, не прошло и 6-и лет после анонса подобных фич в C# 3.
Java, вперёёёёд!!

:-))

--
Let not our proposal be disregarded on the score of our youth

вы или очень плохо понимаете о чём говорите, или просто не поленились написать что-то ради чего-то мне непонятного.

вы сравните количество legacy-кода на Java и C#.
чисто для интереса попробуйте провести это сравнение. если найдёте legacy-код на C# вообще.

а о юморе.

нам тут всем хватает Петросяна, 95-го квартала и этих, как их, зараза, они мне все одинаковые, не помню; короче, у них там слово "жопа" - это уже очень смешно, камеди клаб, вот.

Кабздец какой Вы умный и злой, гага
Пусть Вас не смущает то, что мне кажется смешным, для Вас это видимо слишком низко, так что не утруждайте себя снисходительными шпильками в мой адрес.

Что касается ответа по существу, то ваш невероятно умный комментарий на мой дилетантский взгляд обладает абсолютно нулевой аргументацией, поскольку совершенно непонятно, каким образом новая фича языка может повлиять на старый код. Хотя, если будете повторять своё слово "legacy" с особым упорством и снобизмом, то себя Вы совершенно определённо убедите в своей правоте.

Что касается кода на C#, то ему к моменту выхода 3-ей версии уже исполнилось 7 лет. Я понимаю, что в мире динозавров это не возраст, и вообще, миг истории, но тем не менее, лично я возьмусь утверждать что это вполне сравнимо с УЖЕ 15 годами Java

--
Let not our proposal be disregarded on the score of our youth

Таки вперед :) Попытались перейти на C#, и махнули рукой, выбрали Java (переводим потихоньку с Дельфи, фирме уж 10 лет скоро, понаписано и у заказчиков работает немало). Шибко много писать пришлось бы на C#(не своего, а того что используется), когда на Java оно уже написано, вылизано, да еще и развивается. Плюс - куча бесплатного и кросплатформенного.

Последним доводом был явный рост Android'а. Что недавно оказалось правдой в цифрах и качестве - количество проданного железа на Android'е, и JIT компилятор в последней версии.

Фичи языка - далеко не все что нужно для успешной разработки ПО.

Что касается кода на C#, то ему к моменту выхода 3-ей версии уже исполнилось 7 лет.
Пока сама MS не сделает .NET кроссплатформенным, хоть еще 27 лет - дальше Windows платформы он не выйдет. (не надо о Mono ощутимо уступающем по всем параметрам MS .NET, и JVM от Sun/Oracle и IBM, и наверное уже(или скоро) и Dalvik JVM от Google. Пусть хотя бы глюкавость победят)

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT