На старости лет возникла рабочая необходимость использовать чудо-язык программирования Groovy. Кто-то его называет альтернативой Java, кто-то скриптовым языком для JVM. Но тем не менее, некоторые конструкции заставляют срать кирпичами многих. Особенно - членов секты святого C++, свято верующих в оптимизирующий компилятор.
Учитывая, что я старался не программировать (и вполне успешно) около 4х лет - экзерсисы показались весьма забавными и интересными.
Простая задачка - есть “список списков”, нужно получить второй список, содержащий размеры (.size()) внутренних списков.
Пара вариантов на Groovy:
def listOfLists = [[1,2], [3,4,5] ]
Вариант номер раз:
def listOfSizes = listOfLists.collect { it.size() }
Ну тут всё просто - вызываем “collect” для внешнего списка, а в нём вызываем .size() для внутреннего. На выходе - список размеров.
Следующий пример развеселил - “век живи - век учись” (правда конец немного предсказуем):
def anotherListOfSizes = listOfLists*.size()
И это прекрасно. Очень надеюсь, что идолопоклонники C++ при виде такого изойдут на говно. Здоровья вам, хорошего настроения :).
На фразу “Джава мол тормозит” - отвечу просто. Пусть работает компьютер - он железный. И это его работа :). А если денег нет на новый - продолжайте читать LOR, там обязательно помогут.
Кстати, само слово "groovy", возможно, взято из фразочек героя Duke Nukem 3D, а там, в свою очередь, оно появилось из какой-то части “Зловещих Мертвецов”, когда Эш нашёл винтовку для борьбы с упырями.