Lightspeed breaks Установка пакета Octave Forge - бинарный оператор '==' не реализован - PullRequest
0 голосов
/ 05 сентября 2018

При попытке установить пакет Octave я получаю следующую ошибку:

binary operator '==' not implemented for 'cell' by 'scalar' operations
error: called from
    glob at line 62 column 1
    install at line 60 column 11
    pkg at line 437 column 9

Это происходит, например, для нескольких пакетов, например, оптимизирующих, независимо от того, устанавливаю ли я из локальной загрузки или из Forge.

Обратите внимание, что это происходит, если я загружаю библиотеку Lightspeed (версия 2.8), которая заменяет встроенную функцию glob.

1 Ответ

0 голосов
/ 05 сентября 2018

Я не могу тщательно протестировать это на своем компьютере, но «инструментарий» LightSpeed, похоже, представляет собой не что иное, как набор «файлов» (хотя и требует начальной компиляции).

Добавление этой коллекции к пути приводит к тому, что она затеняет основную октавную функцию (glob), которой в matlab не существует.

Обходной путь - создать пространство имен, то есть вместо того, чтобы добавлять нарушающие элементы непосредственно в путь, обернуть их вокруг папки с плюсом ('+') перед именем (например, "+ Lightspeed") и добавьте это к пути. Затем вы можете вызвать все функции Lightspeed, определенные этим пространством имен, например, "Lightspeed.digamma".

Теоретически это должно работать; это зависит от конкретной реализации, насколько разумно они обрабатывают относительные ссылки и т. д., но в теории это должно быть хорошо.

Кроме того, вы можете просто немного изменить код Lightspeed и заменить все вхождения glob на Lglob или что-то в этом роде.

Или, как предложил Cris, вы можете попробовать удалить Lightspeed из пути и загружать его только тогда, когда вам нужно использовать одну из его функций (или cd в его папку перед выполнением связанных с Lightspeed вещей).

Как отмечено в комментариях, это стоит поднять как ошибку, как для Lightspeed 1 , так и для Octave.


1: Хотя, по-видимому, Lightspeed просто скажет, что не поддерживает Octave, вы можете попробовать исправить код самостоятельно
...