Micro: бит Расширение «Ошибка программы: разыменование нулевых / неопределенных значений» - PullRequest
1 голос
/ 11 июля 2019

Я пишу расширение для Micro: Bit, которое управляет OLED.У меня есть массив, который я объявляю вне любой функции.Когда я пытаюсь использовать его внутри функции, я получаю сообщение об ошибке «Ошибка программы: разыменование нулевого / неопределенного значения» во всплывающем окне оранжевого цвета.

Насколько я могу судить, программа не распознает имя массива внутри какой-либо функции, и я могу создать новый массив с этим именем, как если бы он находился вне области видимости.Выполнение того же кода непосредственно под начальным объявлением (вне какой-либо функции) ведет себя так, как и ожидалось

Ниже приведена простейшая версия, которую я могу сделать, которая по-прежнему выдает ошибку:

//% color="#00CC99"
namespace OLED_Test {

    let screenBuffer = [0x00]

    //block
    export function init() {
        let x = screenBuffer[0]
    }
}

1 Ответ

0 голосов
/ 19 июля 2019

Итак, я до сих пор не знаю, почему это не работает, но я обнаружил, что если я объявлю переменную в пространстве имен, а затем установлю ее внутри функции init, переменная будет иметь подходящее значение для остальных код. Поэтому я просто поместил все свои начальные назначения переменных внутри моей функции инициализации, например:

//% color="#00CC99"
namespace OLED_Test {

    let screenBuffer: Array<number>

    //block
    export function init() {
        screenBuffer = [0x00]
    }
    export function foo(){
        let x = screenBuffer[0]
    }
}
...