Re[2]: А почему нет вызова функций с именованными аргументам
От: enji  
Дата: 12.09.14 05:36
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Моё мнение такое: экономит надо не время записи, а время чтения.

BFE>Запись:
E>>f(.a = 1, .b=42);
BFE>ничем не лучше, а даже хуже, чем:
BFE>

BFE>const int a = 1;
BFE>const int b = 42;
BFE>f(a, b);


это все мило, но кто так пишет? Это просто убивает все однострочники.
Опять же, ты можешь ошибиться и написать f(b, a). А если я напишу f(.b=42, .a=1), то это будет корректно обработано (ну по крайней мере, если применить правила из питона).
Далее, функция может иметь аргументы по умолчанию — void f(a = 1, b = 2, c = 3). И ее можно будет вызывать f(.c=4). Твой вариант с константами тут не поможет...

BFE>Но, что такое a? Что такое b? —

ну вестимо в реальной жизни аргументы не называют a и b ...

BFE>Вызов функции с константами определёнными по месту вызова — это экзотика для хорошего стиля.

BFE>Если в программе встречается более чем один вызов функции с одинаковыми не именованными константами, то это уже плохо. Следует либо поименовать константы, либо завернуть вызов функции в другую функцию, например:
BFE>
BFE>inline void LastAnswerOnUltimateQuestion()
BFE>{
BFE>  const int nAnswerNumber = 1;
BFE>  const int nAnswerValue  = 1;
BFE>  f(nAnswerNumber, nAnswerValue);
BFE>}
BFE>


Это к вопросу о нужности лямбд. Зачем нужна лямбда из одной строки, когда можно на 5 строках в другом месте файла изобразить повторно используемый функтор? Вроде как и низачем. Однако ж функторы особо не пишут, и вместо find_if фигачат цикл...
Отредактировано 12.09.2014 5:45 enji . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.