При каких обстоятельствах я могу передать литерал :
функции Matlab? Я обнаружил с помощью экспериментов, что иногда буква :
передается как строка ':'
, но в других ситуациях возникает ошибка. Например:
>> type writeargs
function writeargs(varargin)
disp(varargin);
end
>> writeargs(:)
Undefined variable writeargs.
>> writeargs(:, 1)
Undefined variable writeargs.
>> writeargs(:, 1, :)
':' [1] ':'
>> writeargs(:, :, :)
':' ':' ':'
>> writeargs(1, 2, :, 4, 5)
[1] [2] ':' [4] [5]
>> writeargs(1, 2, :, end)
Error using writeargs
Too many output arguments.
У меня создается впечатление, что этот синтаксис разрешен, если передано не менее трех аргументов. Это кажется произвольным. Что такое юридический синтаксис здесь?
Изменить: комментарий, запрошенный для использования. Случай использования может быть, когда мои аргументы будут использоваться как фрагменты или индексы. В коде Python у меня были случаи, когда я передавал объекты slice методу. Один вариант использования - это функция, например, вдохновленная этим ответом, где небольшая функция используется для того, чтобы обойти Matlabs неспособность интерпретировать magic(5)(3, :)
, и можно было бы написать помощника и вызовите его с помощью paren(magic(5), 3, :)
.