Flutter 在Dart(颤振)中键入列表(或任何内容)的正确方法

Flutter 在Dart(颤振)中键入列表(或任何内容)的正确方法,flutter,dart,typing,Flutter,Dart,Typing,一种类型应该有多深?F.e.: 列表-看起来有点奇怪,很难阅读,但有可能。 为什么我从来没有见过这样的打字 我找不到这方面的任何信息,所以我觉得这是错误的或不寻常的,但如果有人能详细说明一下,那就太好了。你看不到这样的打字,因为它非常不寻常。如果你愿意,你也可以走得更深。如果您需要定义这样的变量,很可能是您做错了什么,您想要实现的目标可以用一种更简单的方法来实现。 对于您定义的变量,您必须想象这样一个用例: 一个州(list)的学校列表,有多所学校的列表(list)(假设每个城市有多所学校),有

一种类型应该有多深?F.e.:

列表
-看起来有点奇怪,很难阅读,但有可能。 为什么我从来没有见过这样的打字


我找不到这方面的任何信息,所以我觉得这是错误的或不寻常的,但如果有人能详细说明一下,那就太好了。

你看不到这样的打字,因为它非常不寻常。如果你愿意,你也可以走得更深。如果您需要定义这样的变量,很可能是您做错了什么,您想要实现的目标可以用一种更简单的方法来实现。
对于您定义的变量,您必须想象这样一个用例:
一个州(
list
)的学校列表,有多所学校的列表(
list
)(假设每个城市有多所学校),有多个班级/批次的学生角色号地图(
list
)。
^如果你难以想象,请从头到尾阅读。

您通常会看到一个用于存储此类数据结构的表,而不是一个平面变量。更重要的是,在为应用程序开发UI时。

这在逻辑上是正确的,但对包括您在内的任何人来说都是不可读的。让我们回忆一下这里的格式:

List<
  List<
    Map<int, List<int>>
  >
>
代码可以是:

List<
  List<Round>
>

希望您不介意我制作了一个游戏示例来解释代码。

正如您所说,很难阅读,因此如果您这样编写代码,即使您在一个月后看到这段代码片段也会感到困惑。而且您从未看到这段代码并不意味着它不存在。只要它能工作,就可以了,但没有人会推荐像这样编写代码that@Tokenyet:列表是学生的角色编号。具有此列表的int映射可以是类/批,每个键表示为其制作列表的学生的类。此类地图的列表可以是不同的学校。一个清单可以是一个州所有城市的所有学校。谢谢你详细的回答!您确认了我的感受,即可读性(以及可维护性)是这里的主要关注点,类是前进的方向。在这个例子中,我问自己,创建“仅”用于键入的类是否真的是有益的——假设它们再也不会被使用了(因此在其中一个类中没有任何“工作”,比如
fightManager.add(…)
)。哦和ps:热爱你的游戏示例;)
List<
  List<Round>
>
// FightManager, arrange the fight with a lot of predefined round of fights.
class FightManager {
  List<Round> rounds;
}
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