Доступ к полю внешнего анонимного класса от внутреннего анонимного класса

Краткий ответ : Ваш Module уже использует WebAssembly.instantiateStreaming() за кулисами.

Длинный ответ : Emscripten (emcc) - это не только компилятор, но и целая инфраструктура цепочки инструментов. Когда вы используете команду emcc, emcc вызывает компилятор clang для компиляции вашего кода C в WASM, связывает необходимый JS-код для использования в WASM, используя import , и генерирует ] шаблонный JS-код (он называется preamble.js) для создания экземпляра кода WASM для Module, чтобы разработчикам не нужно было писать собственный код для написания кода начальной загрузки .

Посмотрите на свой код glue.js. Вы можете найти строку, которая использует WebAssembly.instantiateStreaming() . Если вы не используете emcc без опции -s SIDE_MODULE=1, он всегда генерирует код preamble.js для вас. Поэтому обычно вам не нужно самостоятельно использовать WebAssembly .

Некоторые продвинутые пользователи не хотят этого большого шаблона и используют WASM более жестко, например, используя clang без emcc. Затем они должны использовать WebAssembly, включая instantiateStreaming(), сами.

5
задан bobince 11 February 2009 в 17:17
поделиться

5 ответов

Я постарался бы не скрывать другую переменную путем выбора имени кроме x.

4
ответ дан 14 December 2019 в 04:49
поделиться

Простой ответ к не тень переменные:

public static void main(String[] args) {
    Comparable c1 = new Comparable() {
        int x = 3;
        public int compareTo(Object o) {
            Comparable c2 = new Comparable() {
                //changed this name
                int y = 4;
                public int compareTo(Object o) {
                    return x;
                }
            };
            return c2.compareTo(o);
        }
    };
    System.out.println(c1.compareTo(null));
}

Вывод:

3

Учитывая, что Вы работаете со сгенерированным кодом, действительно ли это - опция для Вас?

2
ответ дан 14 December 2019 в 04:49
поделиться

AFAIK там не является никаким способом достигнуть того, что Вы хотите. Если можно изменить код (поскольку Вы, кажется, можете к), но не хотят изменять их в именованные классы, можно ли просто изменить имя переменных, таким образом, у Вас нет проблем объема? Необходимо переименовать их для ясности так или иначе

1
ответ дан 14 December 2019 в 04:49
поделиться

Классы являются анонимными - неназванный. Никакой способ получить доступ к их полям с помощью ссылки имени. Нет никакого имени.

1
ответ дан 14 December 2019 в 04:49
поделиться

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

Это похоже на классический случай, где что-то как gensym Lisp сделает вещи легче. Другими словами, имейте различные идентификаторы использования генератора кода для тех переменных - например, x1 и x2.

0
ответ дан 14 December 2019 в 04:49
поделиться
Другие вопросы по тегам:

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