Функция замены в Dart, без замены исходных значений - PullRequest
0 голосов
/ 29 мая 2020

эта параметризованная функция подкачки в DART не меняет местами исходные значения при вызове.

`void main() {
  int var1 = 10;
  int var2 = 20;
  swap(var1, var2);
  print(var1);
  print(var2);
}

swap(var1, var2) {
  var1 = var1 + var2;
  var2 = var1 - var2;
  var1 = var1 - var2;
}`

Результат должен быть 20,10, но остается 10,20.

Ответы [ 2 ]

0 голосов
/ 29 мая 2020

В Dart вы передаете своей функции значения этих переменных, а не сами переменные. Поэтому var1 и var2 в swap() не изменяют ваши var1 и var2 в main().

Вам нужно будет сделать это так:

int var1 = 10; // global scope
int var2 = 20;

void main() {

  swap(var1, var2);
  print(var1);
  print(var2);
}

swap(num1, num2) {
  var1 = num2;
  var2 = num1;
}

EDIT: Санджай абсолютно прав. По значению передаются только примитивные типы.

0 голосов
/ 29 мая 2020

Примитивы (например, int, bool и num) передаются по значению. Но в случае объекта ссылка на объект передается. Это то же поведение, что и в Java для передачи аргументов. Значения не меняются местами в main().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...