Не удалось загрузить файл или сборку 'System.ValueTuple'

Вы можете использовать getter:

class Huffman {
  constructor() { /* ... */ }
  static get Node() {
    return class Node {
      constructor() {  
        var API = this;
        API.symbol = 0; API.weight = 0;
        return API;    
      }
    };
  }
  get Node() {
    return Huffman.Node;
  }
  encode() { /* ... */ }
  decode() { /* ... */ }
  /* ... */
}

// usage
huffman = new Huffman;
new huffman.Node;
new Huffman.Node;

, который в последнем Chrome Dev 44.0.2376.0 на Apple 10.10.2 дает в консоли

  • new huffman.Node
  • Node {symbol: 0, weight: 0}
  • new Huffman.Node
  • Node {symbol: 0, weight: 0}

В других новостях геттеры - это секретный соус, который позволит вам сделать целую кучу классных вещей в ES6.

Обратите внимание. Вышеупомянутая конструкция разбивает instanceof на Node (почему? весь новый класс определяется с каждым вызовом get). Чтобы не сломать instanceof, определите узел за пределами области одного получателя, либо в конструкторе (отключив свойство класса Huffman.Node, и заставив instanceof работать в пространстве имен одного экземпляра Huffman и выйти за его пределы) , или определить узел в области собора или предка Хаффману (позволяя instanceof работать во всех областях ниже, чем тот, где определен узел).

37
задан Djensen 11 March 2019 в 13:58
поделиться