Я работаю над пакетом для октавы и что-то странное происходит. В функции Foo для класса А я сделать рекурсивный вызов с помощью cellfun так:Подфункции и частные функции
... cellfun(@(d) foo(d,localval), cellarray) ...
Теперь функция Foo определяется для нескольких различных классов. Я ранее использовал эту практику успешно. Разница на этот раз в том, что, в классе B, Foo делает использование двух подфункций и функций частного к классу В. Это приводит к тому, выше вызову приведет к следующей ошибке:
error: 'subfunction2' undefined near line 29 column 6
error: called from:
error: /usr/share/octave/packages/mypkg/@B/foo.m at line -1, column -1
Я попытался изменить порядок в которых подфункции перечислены в файле функций для @ B/foo и подтвердили, что он находит первую подфункцию, но не вторую. Я также попытался сделать частные подфункции классом B, и проблема не исчезла.
Итак, мой вопрос: что здесь происходит? Это использование cellfun? Анонимная функция? Почему он улавливает одну подфункцию foo, но не две? Классы объектов? Что происходит с сообщением о строке/столбце -1? Мне бы очень хотелось скрыть эти вспомогательные функции от пользователя, поэтому я предпочел бы что-то другое, кроме как отбросить подфункции в общедоступном пути.