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

BFE>Вы сами так пишите,
Автор: enji
Дата: 11.09.14
только вместо локальных констант используете enum.

это от бедности

BFE>
BFE>     SendAnswer(
BFE>                .nAnswerNumber   = 1,
BFE>                .nAnswerPriority = 42,
BFE>                .nAnswerValue    = 42
BFE>               );
BFE>

BFE>так как читать такое намного проще читать. Однострочники меня не волнуют.

это нормально. Все равно компактней твоего варианта, плюс не вводит лишних имен. Плюс ошибку в имени определит компилятор

E>>Опять же, ты можешь ошибиться и написать f(b, a). А если я напишу f(.b=42, .a=1), то это будет корректно обработано (ну по крайней мере, если применить правила из питона).

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


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

BFE>Потому, что для чтения кода важна локальность определения. Редко, когда один и тот же функтор используется более одного раза в программе.
Во во. Та же штука с именованными аргументами...

BFE>Ну и вообще, предложенный метод не достаточно радикален. Перепутать f(.a=1, .b=42) и f(.a=42, .b=1) тоже довольно просто.

Тут по крайней мере четко видно, что есть "а", а что есть "b"
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.