Lambda решает вопрос модификации поведения при композиции?
От: Kingofastellarwar Украина  
Дата: 04.11.16 12:49
Оценка:
так что, теперь с наличием лямбд имеет смысл поведение определять не в методах а в лямбдах которые, потом можно динамечески менять на любые?

например для избежания наследования мы теперь может композитить, и то что мы раньше перегружали теперь можно определит как std::fucntion у поля класса и подменять динамически

с одной стороны изврат делающий из с++ скриптовой язык с другой типобезопасность не страдает
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Отредактировано 04.11.2016 12:49 Barbar1an . Предыдущая версия .
Re: Lambda решает вопрос модификации поведения при композиции?
От: turbocode  
Дата: 04.11.16 13:20
Оценка:
K>с одной стороны изврат делающий из с++ скриптовой язык с другой типобезопасность не страдает

Для скриптового языка нужен Eval которым в С++ и не пахнет.
Re: Lambda решает вопрос модификации поведения при композиции?
От: antropolog  
Дата: 04.11.16 14:33
Оценка:
Здравствуйте, Kingofastellarwar, Вы писали:

K>так что, теперь с наличием лямбд имеет смысл поведение определять не в методах а в лямбдах которые, потом можно динамечески менять на любые?

K>например для избежания наследования мы теперь может композитить, и то что мы раньше перегружали теперь можно определит как std::fucntion у поля класса и подменять динамически

Смысл есть если есть потребность менять имплементацию динамически, либо если методы класса, которые подразумеваются быть виртуальными, между собой не связаны по смыслу (т.е. не имплементируют отдельный интерфейс ). В противном случае лучше выделить отдельный интерфейс и наследовать имплементации от него, т.к. это лучше выразит семантику и повысит грепабельность кода.
Re[2]: Lambda решает вопрос модификации поведения при композиции?
От: Evgeny.Panasyuk Россия  
Дата: 04.11.16 17:08
Оценка: 4 (1)
Здравствуйте, turbocode, Вы писали:

K>>с одной стороны изврат делающий из с++ скриптовой язык с другой типобезопасность не страдает

T>Для скриптового языка нужен Eval которым в С++ и не пахнет.

Пахнет, например Cling, в котором REPL
Re[3]: Lambda решает вопрос модификации поведения при композиции?
От: turbocode  
Дата: 04.11.16 18:00
Оценка:
K>>>с одной стороны изврат делающий из с++ скриптовой язык с другой типобезопасность не страдает
T>>Для скриптового языка нужен Eval которым в С++ и не пахнет.

EP>Пахнет, например Cling, в котором REPL


Очевидно что имелась ввиду встроенная поддержка eval в С++ без сторонних библиотек.
Re[4]: Lambda решает вопрос модификации поведения при композиции?
От: Evgeny.Panasyuk Россия  
Дата: 04.11.16 18:09
Оценка: +1
Здравствуйте, turbocode, Вы писали:

EP>>Пахнет, например Cling, в котором REPL

T>Очевидно что имелась ввиду встроенная поддержка eval в С++ без сторонних библиотек.

Совсем не очевидно. Если вводить подобные искусственные ограничения, то так C++ вообще без компилятора останется, ибо они все "сторонние"
Смысл eval в инкрементальном добавлении и выполнении кода — вот Cling это и даёт.
Re[5]: Lambda решает вопрос модификации поведения при композиции?
От: turbocode  
Дата: 04.11.16 18:52
Оценка:
EP>Совсем не очевидно. Если вводить подобные искусственные ограничения, то так C++ вообще без компилятора останется, ибо они все "сторонние"
Имелась ввиду поддержка на уровне синтаксиса С++.

EP>Смысл eval в инкрементальном добавлении и выполнении кода — вот Cling это и даёт.

Не понятно как оно взаимодействует с внешним окружением, например как байндить внешние функции классов и использовать их внутри скрипта.
Re: Lambda решает вопрос модификации поведения при композиции?
От: Alexander G Украина  
Дата: 08.11.16 17:46
Оценка:
Здравствуйте, Kingofastellarwar, Вы писали:

K>так что, теперь с наличием лямбд имеет смысл поведение определять не в методах а в лямбдах которые, потом можно динамечески менять на любые?


Вряд ли это всегда удобно.
Когда поведение определяется двумя методами, которые ещё имеют общий контекст, то что, тащить tuple с двумя function и одним shared_ptr<void> , держащим этот общий контекст?

K>делающий из с++ скриптовой язык

но кстати да, иногда удобно сначала попробовать на лямбдах, а потом сделать "по-нормальному"
Русский военный корабль идёт ко дну!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.