Правильный способ печатать списки (или что-нибудь) в Dart (Flutter) - PullRequest
0 голосов
/ 14 октября 2019

Насколько «глубоким» должен быть один тип? Fe:

List<List<Map<int, List<int>>>> - выглядит странно и трудно читаемо, но возможно. Почему я никогда не вижу подобных печатных текстов?

Я не могу найти никакой информации об этом, поэтому у меня возникает ощущение, что это неправильно или необычно, но было бы замечательно, если бы кто-то мог уточнить.

Ответы [ 2 ]

1 голос
/ 14 октября 2019

Это логично правильно использовать, но нечитаемо для всех, включая вас. Итак, давайте вспомним формат здесь:

List<
  List<
    Map<int, List<int>>
  >
>

Самая глубокая и самая маленькая единица - Map<int, List<int>>. Это немного уродливо, но вы все равно можете использовать это. Однако вам нужно List для этого уродливого юнита, поэтому вы должны дать ему class, чтобы сделать его более понятным.

class Round {
  Map<int, List<int>> monsterIdPerRound; // <round 1, monster 0, 1, 2, 0, 3...>
}

И код может быть:

List<
  List<Round>
>

-

Вас это устраивает? Если бы не было, мы могли бы сделать это гораздо более понятным, как показано ниже:

// FightManager, arrange the fight with a lot of predefined round of fights.
class FightManager {
  List<Round> rounds;
}

Теперь код должен быть:

List<FightManager>

-

Это легко поддерживать,Если спросить, что такое List<FightManager>? Это все тот же способ придать Ему значение.

class LevelManager {
  List<FightManager> fightManagers;
  LevelManager(this.fightManagers);
}

--

List<FightManager> fightManagers = new List<FightManager>();
// prepare datas...
fightManager.add(getSwordOnlyFightManager());
fightManager.add(getMagicOnlyFightManager());
fightManager.add(getArcherOnlyFightManager());
fightManager.add(getBossFightManager());
fightManager.add(getRandomFightManager());

LevelManager(fightManagers);

Пора вернуться к исходному формату и спросить, какой код вы хотите сохранить или сохранить кодирование?

List<
  List<
    Map<int, List<int>>
  >
>

или

LevelManager

Надеюсь, вы не возражаете, я сделал игровой пример для объяснения кода.

0 голосов
/ 14 октября 2019

Вы не видите таких печатей, потому что это очень необычно. Вы можете пойти глубже, если хотите. Если вам нужно определить такую ​​переменную, весьма вероятно, что вы делаете что-то не так, и то, что вы хотите достичь, может быть сделано более простым способом.
Для переменной, которую вы определили, вам нужно представитьпример использования, например:
Список школ в штате (List<List<Map>>) со списком из нескольких школ (List<Map>) (скажем, в каждом городе есть несколько школ) с картой из нескольких классов / партий {(Школа) (Map<int, List<int>>)} номеров ролей учеников (List<int>).
^ Прочитайте это снизу вверх, если у вас возникли трудности с воображением.
Обычно вы видите таблицу для хранения такого родаструктуры данных, а не плоской переменной. Более того, при разработке пользовательского интерфейса для приложения.

...