如何通过另一个类修改引用变量



问题是当我将我的变量(字符串(作为函数的参数时,它会保持原样。就像只有价值传递一样。

void main() {
  String quote = "search";
  print(quote);
  f(quote);
  print(quote);
}

void f(String txt) {
  txt = "find";
}

结果是 :

search
search 

我想要的是:

search
find 

Dart 使用按值传递的参数,因此您希望看到这一点。

您可以将基元包装在一个类中,并在该类上实现变异函数。这样,您就可以在逻辑上将可以修改数据的函数与数据分组。

main()
  Quote quote = Quote('search');
  print(quote.quote);
  quote.f();
  print(quote.quote);
}
class Quote {
  String quote;
  Quote(this.quote);
  void f() {
    quote = 'find';
  }
}

或者你可以只使用列表而不创建新类

void main() {
  List quote =  ["search"];
  print(quote[0]);
  f(quote);
  print(quote[0]);
}

void f(List txt) {
  txt[0] = "find";
}

最新更新