Название Word не является классом / типом

У меня есть три класса по Dart, как показано ниже:

Немного:

part of CB_Crypto;

class Bit {
  bool _state = false,
       _sympathetic = false;
  int _alignment = 0;

  Bit(List args) {
    _state = args[0];
    _sympathetic = args[1];
    _alignment = args[2];
  }

  bool state() => _state;

  bool not() => _state = !_state;

  bool set(bool state) => _state = state;

  bool isSympathetic() =>  _sympathetic;

  operator &(Bit b) => state() && b.state();

  operator |(Bit b) => state() || b.state();
}

Слово:

part of CB_Crypto;

class Word {
  List<Bit> _bits = [];

  Word(List<List> bits) {
    bits.forEach((bit) => _bits.add(new Bit(bit)));
  }

  bool not(int i) => _bits[i].not();

  void notAll() => _bits.forEach((bit) => bit.not());

}

Стол:

part of CB_Crypto;

class Table {
  List<Word> _words;

  Word(List<List> words) {
    words.forEach((word) => _words.add(new Word(word)));
  }
}

Все они находятся в разных файлах и являются частью одной библиотеки. Однако я получаю предупреждение от Dartium в классе Table за использование Word в качестве типа и попытку создать экземпляр объекта Word: the name "Word" is not a (type/class) and cannot be used as a parametrized type.

Я считаю, что написал класс Word, аналогичный классу Bit, и это не вызывает ошибки при использовании в таблице, поскольку используется Word. Я что-то упускаю?


person Melvin Sowah    schedule 15.06.2014    source источник
comment
Не могли бы вы показать код, который вызывает эту ошибку?   -  person Robert    schedule 15.06.2014
comment
Мне интересно, что это работает: Word(List<List> words) { - Для лучшего понимания вы должны ввести (внутренний) список для нас.   -  person Robert    schedule 15.06.2014
comment
Вы добавили part "file.dart" для каждой части в свою библиотеку?   -  person Günter Zöchbauer    schedule 15.06.2014
comment
@Robert код, который вызывает ошибку, - это класс Table (определение списка и цикл forEach.   -  person Melvin Sowah    schedule 15.06.2014
comment
@ GünterZöchbauer, да.   -  person Melvin Sowah    schedule 15.06.2014


Ответы (1)


Вы используете Word как конструктор в классе Table.

Word(List<List> words) {
  words.forEach((word) => _words.add(new Word(word)));
}

Ваш конструктор должен выглядеть Table.

Table(List<List> words) {
  words.forEach((word) => _words.add(new Word(word)));
}
person Kevin Sheehan    schedule 15.06.2014
comment
Не могу поверить, что не заметил этого. Я скопировал и прошил код таблицы из Word и изменил все имена, потому что они, по сути, были одинаковыми. Наверное, я пропустил один :) спасибо - person Melvin Sowah; 15.06.2014