переменная дротика не передается по ссылке - PullRequest
0 голосов
/ 22 января 2020

Согласно Dart Documentation каждый тип данных является объектом. но когда я передаю целочисленную переменную в функцию, она не передается по ссылке, как должно быть, если это объект, я пишу этот пример для демонстрации

void main() {
   int d =5;
   change(d);
   print(d);
   }
   void change(int x){
   x=0;
   }

следующий код: 5.

Ответы [ 4 ]

1 голос
/ 22 января 2020

Вы должны сделать это так:

void main() {
  int d = 5;
  d = change(d);
  print(d); // prints 0
}

int change(int x) {
  x = 0;
  return x;
}
0 голосов
/ 23 января 2020

Не имеет значения, передано ли целое число по значению или по ссылке. Нет целочисленных методов, которые изменяют объект. Строки определенно передаются по ссылке в том смысле, что они не копируются. Но вы не можете изменить их. И для любого объекта код, который вы написали, не изменит оригинал. Например.

void main() {
   Map d = {};
   change(d);
   print(d);
 }
 void change(Map x){
   x={};
 }
0 голосов
/ 23 января 2020

На самом деле это невозможно в Дартс. Примитивные типы передаются по значению, как и в таких языках, как Java. Я задавался вопросом об одном и том же вопросе всего несколько дней go. К сожалению, я не смог найти эту спецификацию ни в документации, ни в спецификации языка.

0 голосов
/ 22 января 2020

Это невозможно в Дартсе. Поддержка типов структурных значений, ключевых слов ref или val. Вы можете создать глобальную переменную и затем использовать ее внутри функции. Удачи

...