【问题标题】:Flutter: Comparing variables from functionFlutter:比较函数中的变量
【发布时间】:2022-08-10 22:41:19
【问题描述】:

我正在尝试比较从列表中获取随机元素的函数的结果,以确保元素不相同。我的代码大部分时间给出了不同的元素,但偶尔会导致 player1 和 player2 的元素相同。我假设这是因为在 player2gen 函数中调用 player1 时,它会生成一个新变量。我不知道如何解决这个问题。

我的代码:

player1gen(List players) {
  return players[Random().nextInt(players.length)].toString();
}

String get player1 => player1gen(players);

player2gen(List players) {
  String player2comp = players[Random().nextInt(players.length)].toString();
  while (player2comp == player1) {
    String player2comp = players[Random().nextInt(players.length)].toString();
    if (player2comp != player1) {
      break;
    }
  }
  return player2comp;
}

String get player2 => player2gen(players);
  • 无论何时使用,您总是想要一个新的player1,还是只想要两个可以继续使用的不同播放器?我觉得前者很违反直觉,因为您只能访问您的播放器一次。
  • 当它被调用时,我总是想要一个新的 player1,与 player2 相同。每一轮都需要有不同的玩家。

标签: flutter dart


【解决方案1】:

获取尚未生成的随机数的递归方法。维护一个类似这样的全局变量,以存储先前生成的随机数。

   //Global Variable
       late String player1;
    
        player1gen(List players) {
          player1 =  players[Random().nextInt(players.length)].toString();
          return player1;
        }
        
        String get player1 => player1gen(players);
        
        player2gen(List players) {
            String player2comp = players[Random().nextInt(players.length)].toString();
        if(player2comp == player1)
          return player2comp;
        else 
          return player2gen(players); //Recursive function. It will run provide different number that is not equal to player 1 
        }
        
        String get player2 => player2gen(players);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 2014-01-27
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多