Может результат вызова функции использоваться в качестве значения параметра по умолчанию?

Если вы хотите построить месяц, вы можете сделать

data.loc['2018-02',"X"].plot()

6 месяцев

data.loc['2018-02':'2018-08',"X"].plot()

, и та же логика применяется для других диапазонов

6
задан Motti 14 October 2008 в 20:53
поделиться

8 ответов

Пойди разберись! Это действительно работает. Параметры по умолчанию в функциях C++

7
ответ дан 8 December 2019 в 02:47
поделиться

Что случилось с простым удалением дополнительного параметра в первом объявлении и обеспечении единственной перегрузки параметра?

int foo(int x)
{
    Bar bar = //whatever initialization
    return foo(x,bar.baz());
}

int foo(int x,int y)
{
  //whatever the implementation is right now
}

Я думаю, что это имеет тенденцию быть намного более чистым и более гибким, чем попытка использовать некоторое динамическое значение по умолчанию.

6
ответ дан 8 December 2019 в 02:47
поделиться

Да. Что Вы записали работам.

6
ответ дан 8 December 2019 в 02:47
поделиться

Я использовал бы две перегруженных функции:

int foo(int x, int y);

int foo(int x){return foo(x,bar);}

Если Вы позволяете передающей функции быть встроенной, то потеря производительности вероятна маленьким обнулить. Если Вы держите тело его исключительным в незаголовочном файле может быть стоимость производительности (вероятно, чтобы быть маленькой), но намного больше гибкости в реализации и уменьшенной связи.

7
ответ дан 8 December 2019 в 02:47
поделиться

В стандарте разделите 8.3.6 (Параметры по умолчанию), абзац 5, они дают пример, использующий просто этот подход. А именно, это вызывает это, параметры по умолчанию являются выражениями, таким образом, вызов функции применяется, хотя с ограничениями, такими как поиск имени и соответствие типов.

На моем рабочем месте мы использовали подписи как это:

void An_object::An_object(
  const Foo &a,
  const Bar &b,
  const Strategem &s = Default_strategem()
);

позволить клиентам переопределять поведение в конструкторе класса. Это пригодилось для условного поведения, которое влияло на производительность переводчика...

4
ответ дан 8 December 2019 в 02:47
поделиться

Тангенциальный, но это смотрит на меня как, он представил бы проблемы зависимости в будущем. Я пошел бы с подходом stbuton.myopenid.com.

2
ответ дан 8 December 2019 в 02:47
поделиться

Это должно быть совершенно допустимо, чтобы вызвать глобальную функцию или сослаться на глобальный объект в этом контексте, пока объявление функции/объекта находится в объеме. Это может или не может быть желательно (с точки зрения хорошего дизайна), но это должно работать.

1
ответ дан 8 December 2019 в 02:47
поделиться

Попытайтесь делать панель () статической функцией членства. Это позволит любую часть программы, которая имеет такой статический класс в объеме для доступа к ней. Например:

класс Foo {общественность:

статическая международная панель ();};

Затем Вы объявили бы:

международное нечто (интервал x, интервал y = Foo:: панель ());

Если Вам нужны различные объекты, затем передают в экземпляре объекта вместо этого.

0
ответ дан 8 December 2019 в 02:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: