IRremote.h & ldquo; нет такого файла или каталога & rdquo;

Это расширение для блестящего ответа BigJim .

В моем случае у меня был класс NodeBase со словарем Children, и мне нужен был способ в целом сделать O (1) поиск от детей. Я пытался вернуть частное поле слова в getter из Children, поэтому, очевидно, я хотел избежать дорогостоящего копирования / итерации. Поэтому я использовал код Bigjim, чтобы передать Dictionary в общий Dictionary:

// Abstract parent class
public abstract class NodeBase
{
    public abstract IDictionary Children { get; }
    ...
}

// Implementing child class
public class RealNode : NodeBase
{
    private Dictionary containedNodes;

    public override IDictionary Children
    {
        // Using a modification of Bigjim's code to cast the Dictionary:
        return new IDictionary().CastDictionary();
    }
    ...
}

. Это сработало хорошо. Тем не менее, я в конечном итоге столкнулся с несвязанными ограничениями и в итоге создал абстрактный метод FindChild() в базовом классе, который вместо этого выполнял бы поиск. Как оказалось, это устранило потребность в литом словаре в первую очередь. (Я смог заменить его простым IEnumerable для моих целей.)

Итак, вопрос, который вы можете задать (особенно если производительность - это проблема, запрещающая вам использовать .Cast<> или .ConvertAll<>), is:

«Нужно ли мне вообще использовать всю коллекцию, или я могу использовать абстрактный метод для хранения специальных знаний, необходимых для выполнения задачи, и тем самым избежать прямого доступа к коллекции?»

Иногда самое простое решение - лучшее.

-1
задан Joe Pigott 26 June 2019 в 21:22
поделиться

1 ответ

В инструкциях на https://github.com/z3t0/Arduino-IRremote написано (акцент мой):

Установка

  1. Перейдите на страницу «Релизы».
  2. Загрузите последнюю версию.
  3. Извлеките zip-файл
  4. Переместите папку «IRremote», которая была извлечена, в каталог ваших библиотек .
  5. Обязательно удалите Arduino_Root / library / RobotIRremote. Где Arduino_Root ссылается на каталог установки Arduino. Библиотека RobotIRremote имеет схожие определения с IRremote и вызывает ошибки.

Этот жирный бит совершенно расплывчатый и может относиться ко многим различным местам. Описание в приведенной ниже строке хорошо описывает, где на самом деле находится «каталог библиотек», но описание не в той строке, где это необходимо.

Я думаю, что когда они говорят

  1. Переместите папку «IRremote», которая была извлечена в каталог вашей библиотеки.

они на самом деле означают

  1. Переместить папку «IRremote», которая была извлечена, в Arduino_Root / library / IRremote, где Arduino_Root ссылается на каталог установки Arduino .
1
ответ дан Jerry Jeremiah 26 June 2019 в 21:22
поделиться
Другие вопросы по тегам:

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