如何从Dart中的forEach循环返回?

Pat*_*cow 4 for-loop dart

我有这个功能

  bool nameExists(players, player) {
    players.forEach((f) {
      if (f.data['name'].toLowerCase() == player.toLowerCase()) {
        return true;
      }
    });

    return false;
  }
Run Code Online (Sandbox Code Playgroud)

即使条件满足,它也总是返回false.

有任何想法吗?

Gün*_*uer 11

无法从中返回值forEach.只需使用for循环.

  bool nameExists(players, player) {
    for(var f in players) {
      if (f.data['name'].toLowerCase() == player.toLowerCase()) {
        return true;
      }
    }

    return false;
  }
Run Code Online (Sandbox Code Playgroud)

  • 最重要的是,Dart风格指南专门[推荐](https://www.dartlang.org/guides/language/effective-dart/usage#avoid-using-iterableforeach-with-a-function-literal)使用`for`循环遍历`forEach`,除非您可以重用现有函数. (3认同)

Rei*_*nds 8

对于此特定用例,您还可以使用any()代替forEach(),例如

bool nameExists(players, player) =>
  players.any((f) => f.data["name"].toLowerCase() == player.toLowerCase());
Run Code Online (Sandbox Code Playgroud)