Home > Net >  How to return two value from a function in dart?
How to return two value from a function in dart?

Time:01-06

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

CodePudding user response:

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.

CodePudding user response:

Dart not support return multiple values in function, you can return it with array, map, or you can use third lib tuple

CodePudding user response:

Please refer to below code

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

void main() {
  bool flag = false;
  for (int i = 0; i < 100; i  ) {
   Map<String, dynamic> res = gameCode();
    print(res);
    if (res['user_number'] == res['computer_number']) {
      flag = true;
      break;
    }

  }
}

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

Map<String, dynamic> gameCode() {
  int computerNumber = randomNumber(9);
  print("start guessing the number : ");
  int userNumber = 
    int.parse(stdin.readLineSync()!);
  if (userNumber == computerNumber) {
    print("You got it");
  }
  return {
    "computer_number": computerNumber,
    "user_number": userNumber,
  };
}


  •  Tags:  
  • Related