Search code examples
functiondartmethodsreturndart3

How to return two value from a function in dart?


here is my code

import 'dart:io';
import 'dart:math';

void main() {
  bool flag = false;
  for (int i = 0; i < 100; i++) {
    gameCode();
    if (userNumber == computerNumber) {
      flag = true;
      break;
    }

  }
}

int randomNumber(number) {
  Random randNumber = Random();
  int random = randNumber.nextInt(number);
  return random;
}

gameCode() {
  int computerNumber = randomNumber(9);
  print("start guessing the number : ");
  int userNumber = int.parse(stdin.readLineSync()!);
  if (userNumber == computerNumber) {
    print("You got it");
  }
}

in this code you can see gameCode function. in that function there is two value that i need to use in main function.so how do i return those two keyword from that function ?

//userNumber // computerNumber

this is the variable that i want to return from that code


Solution

  • Dart does not support returning multiple values in the current latest version. I would in your case recommend creating a class for the specific purpose of define the result from gameCode(). So something like this:

    class GameCodeResult {
      int userNumber;
      int computerNumber;
    
      GameCodeResult({
        required this.userNumber,
        required this.computerNumber,
      });
    }
    

    Which we can then use like this in your program:

    import 'dart:io';
    import 'dart:math';
    
    void main() {
      bool flag = false;
      for (int i = 0; i < 100; i++) {
        GameCodeResult result = gameCode();
        if (result.userNumber == result.computerNumber) {
          flag = true;
          break;
        }
      }
    }
    
    final _random = Random();
    int randomNumber(int maxNumber) => _random.nextInt(maxNumber);
    
    GameCodeResult gameCode() {
      int computerNumber = randomNumber(9);
      print("start guessing the number : ");
      int userNumber = int.parse(stdin.readLineSync()!);
    
      if (userNumber == computerNumber) {
        print("You got it");
      }
    
      return GameCodeResult(userNumber: userNumber, computerNumber: computerNumber);
    }
    

    Note, I also fixed your randomNumber() method since it is not recommended to generate a new Random() object for each new random number you want. We should instead reuse an instance of Random in our program.