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

时间:2019-04-28 23:35:12

标签: dart flutter

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

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


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

结果是:

search
search 

我想要的是:

search
find 

2 个答案:

答案 0 :(得分:1)

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';
  }
}

答案 1 :(得分:0)

或者您可以直接使用List而不创建新类

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


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