![]() |
Модераторы: LSD Страницы: (144) « Первая ... 44 45 [46] 47 48 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]() ![]() ![]() |
|
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 4 Всего: 142 |
Так вот оказывается что надо для того, чтобы ты не спрашивал про порядки ![]() Смотря что ты под ними понимаешь: у замыканий одно применение, у лямбда-выражений - другое. Замыкания обычно нужны в тех случаях, когда некая логика, актуальная только для одного метода повторяется в нем несколько раз. В этом случае бывает удобно вынести ее в отдельное замыкание и вместо повторов вызывать его как обычный метод. Можно, конечно и на уровень класса вынести, но тогда все локально-видимые сущности (переменные, параметры и т. д.) придется передавать в виде аргументов при каждом вызове, что в конечном счете снизит эффект от использования такого подхода, я уже не говорю, что загромождается пространство класса методом, актуальным только в одном методе. На самом деле использование замыканий в объектно-ориентированных языках не столь эффективно, как в функциональных, откуда они собственно и пришли. В функциональных языках они иногда решают такие задачи, которые в ооя решаются несколько иначе. Что до лямд, то это очень актуальная штука, используются они главным образом для вызова методов, принимающих метод как аргумент. Во многих случаях лучше описать логику функции-аргумента прямо при вызове такого метода, чем выносить его на уровень класса. Иногда их использование в сочетании с некоторыми другими элементами языка дает даже некое подобие расширения синтаксиса языка(на самом деле никакого расширения нет, но результат практически тот же). Так что это вещь зачетная. Ну и там еще койчо может зависеть и от реализации, в дотнете, к пирмеру, однострочные лямбды могут быть разобраны на дерево выражений и это используется в некоторых интересных технологиях. Но это уже не столько сами лямды дают, сколько конкретная их реализация. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
Beltar |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 2 Всего: 7 |
Это называется вложенная функция, существует в Паскале со времен его основания, оформляется самым естественным образом и не требует какого-то особого названия. Кстати, в Delphi сейчас есть и вложенные типы, учитывая, что сама программа на Паскале может рассматриваться, как одна функция под названием Program и все остальное в нее вложено, четкая иерархия пространств имен в которой можно даже так:
![]() -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. ![]() Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
||||
|
|||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 4 Всего: 142 |
Учитывая, что понятие пришло из функционального программирования, полагаю было бы куда разумнее использовать терминологию, так же взятую оттуда. Некоторые разработчики языков и технологий очень любят давать вновь вводимым в эти технологии понятия свои названия(майкрософт тоже очень любит этим заниматься). Использовать их внутри своего круга - нормально, но настаивать на том, что так это должно называться повсеместно - все-таки наверно неправильно. Кстати в том же до-диезе анонимные методы появились еще до лямбд и замыканий, правда они не видели контекста и реализовны были иначе. В нете они тоже есть и были с самого начала. В нете пространства имен и так есть, правда нет области видимости охватывающей одно пространство, но это не смертельно. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 2 Всего: 7 |
Delphi и C++ не являются функциональными языками. Может и можно в них использовать эту парадигму, но тут я пас. Так зачем в них нужны методы из функционального программирования?
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. ![]() Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 4 Всего: 142 |
Не знаю как насчет дельфы, но C++ - мультипарадигменный язык, хотя я в упор не понимаю, почему вопрос об этом языке задается мне. Если говорить обо всяких фишках, пришедших из других языков и парадигм, то обычно они заимствуются из-за того, что могут что-то полезное принести в язык. Вообще, современных языков, придерживающихся какой-то парадигмы в чистом виде скорей всего и нет вовсе. Разве что DSL-ы какие. А так, банальная рекурсия - и та пришла из функционального программирования, но никому же не приходит в голову спрашивать зачем она нужна. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
kolesnle |
|
||||||
![]() Упертый сишник ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 22.3.2013 Репутация: нет Всего: нет |
Они и в C++ были с самого начала ![]()
тоже самое с классом
А можно и не анонимно
Это сообщение отредактировал(а) kolesnle - 10.4.2013, 21:53 |
||||||
|
|||||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 1 Всего: 329 |
мышкой поводите по матрице в разные стороны
http://www.embarcadero.com/ru/rad-in-actio...cation-showcase Добавлено @ 23:37 Тут по поводу того хочу написать, что программист в дельфи сам должен уничтожать созданный им объект и позаботиться о том, чтобы в случае исключения не было утечек памяти, это я про try...finally..end Ну в этом нет ничего страшного. Может даже и хорошо, что так реализовано. Но вот ещё один вариант: http://alex.ciobanu.org/?p=478
я не пробовал, но по словам автора блога, объект без проблем самоуничтожится при выходе из функции |
|||
|
||||
Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 2 Всего: 7 |
Сам себя не похвалишь, никто не похвалит. ;)
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. ![]() Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
k0rvin |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
Нет, не называется, ровно до тех пор пока вложенную функцию со всем ее лексическим контекстом нельзя передать во вне. А всякие фишки типа каррирования и частичного применения делают замыкания крайне удобными. В том же Хаскелле, например.
Добавлено через 6 минут и 44 секунды Пример использования фичи ради самой фичи и как следствие — ужасный интерфейс. -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||
|
|||||
irinazanuda |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 911 Регистрация: 23.6.2010 Репутация: нет Всего: 18 |
Без hml Вы все ничто!!!
|
|||
|
||||
Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 2 Всего: 7 |
Передать вложенную функцию во вне? Спасибо, курите свой бред сами. А мы уж как-нибудь проживем по строго иерархическй модели пространств имен. Что касается Хаскелла, то на него вобще глубоко до фени, пусть со своими концепциями, что угодно делает. И да, я лично не полезу в справочники, чтобы перевести на нормальный императивный язык, что за хрень тут приведена. Я вот этого понять не могу, обвинять язык А в том, что он не использует каких-то костылей из языка B.
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. ![]() Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 4 Всего: 161 |
Чем это ужаснее делегирования метода? ![]() k0rvin, и сколь же великие перспективы при этом открываются? Это сообщение отредактировал(а) Zloxa - 11.4.2013, 08:58 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 1 Всего: 329 |
Ты настроен предвзято, не объективно ![]() Добавлено через 29 секунд Там просто список приложений, написанных на дельфи. При чем здесь интерфейс ![]() Добавлено через 55 секунд
И звать нас никак! Добавлено через 1 минуту и 54 секунды что это за бред ![]() |
||||
|
|||||
kolesnle |
|
|||
![]() Упертый сишник ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 22.3.2013 Репутация: нет Всего: нет |
Skype на Qt4 с C++ написан, а там не верная информация |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 4 Всего: 142 |
![]() На сколько порядков? ![]() На чем бы ни был написан скайп, хвастаться этим точно не стоит ![]() -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила ведения Религиозных войн | |
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Религиозные войны | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |