Reputation: 852
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
Upvotes: 0
Views: 2693
Reputation: 51
you can do it with records now, it should allow you to send typed properties. This example will return a record with named fields.
({int computerNumber, int userNumber}) gameCode() {
...
return (computerNumber: computerNumber, userNumber: userNumber);
}
and to deconstruct named fields you do the colon variable
main() {
final (:computerNumber, :userNumber) = gameCode();
}
Upvotes: 1
Reputation: 37
With the Latest Dart: 3.0.0 version you can pass more than one value from function using Records
import 'dart:io';
import 'dart:math';
import 'dart:math';
void main() {
bool flag = false;
for (int i = 0; i < 100; i++) {
var value = gameCode();
if (value.$1 == value.$2) {
flag = true;
break;
}
}
print("The flag is : $flag");
}
int randomNumber(number) {
Random randNumber = Random();
int random = randNumber.nextInt(number);
return random;
}
(int, int) gameCode() {
int computerNumber = randomNumber(9);
print("start guessing the computer number : $computerNumber");
int userNumber = int.parse(stdin.readLineSync()!);
print("start guessing the user number : $userNumber");
if (userNumber == computerNumber) {
print("You got it");
}
return (computerNumber, userNumber);
}
Upvotes: 1
Reputation: 4094
With the Latest Dart: 3.0.0
version you can pass more than one value from function using Records
(int, int) gameCode() {
int computerNumber = randomNumber(9);
int userNumber = int.parse(stdin.readLineSync()!);
return (computerNumber,userNumber);
}
var result=gameCode();
print(result.$1);
print(result.$2);
Upvotes: 1
Reputation: 31199
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.
Upvotes: 3
Reputation: 1469
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,
};
}
Upvotes: 1