У меня есть функция, которая принимает 3 обязательных входов и 1 дополнительный:Анонимные функции с varargin
f(A, B, C, X)
Я хочу использовать анонимную функцию, таким образом
h = @(X)f(A,B,C,X)
где A, B, C
уже определены , так что я могу просто позвонить h(1)
и код запускает f(A,B,C,1)
, а также h()
для запуска f(A,B,C)
. Единственный способ, которым я могу это сделать (исправить меня, если я ошибаюсь) использует varargin
. Я определяю
f(A,B,C,varargin)
и использовать
h = @(varargin)f(A,B,C,varargin)
Проблема заключается в том, что, когда я звоню непосредственно f(A,B,C,1)
, то внутри функции у меня есть varargin = {1}
. Если я позвоню h(1)
, то у меня есть varargin = {{1}}
. Как я могу избежать этого? Есть ли лучший способ реализовать то, что я хочу?
Я не вижу никаких недостатков, используя 'varargin {:}', как это должно быть сделано. – Daniel
@ Даниэль Я тоже, но мне не нравилась сила «необходимости» в то время. – TroyHaskin
Это прекрасно работает, спасибо! – Simon