gpt4 book ai didi

dart - 是否可以修改 Dart 中参数的引用?

转载 作者:IT王子 更新时间:2023-10-29 07:12:13 25 4
gpt4 key购买 nike

不确定标题中的术语是否 100% 正确,但这个例子很容易说明我的意思:

class MyClass{
String str = '';
MyClass(this.str);
}


void main() {
MyClass obj1 = MyClass('obj1 initial');

print(obj1.str);

doSomething(obj1);
print(obj1.str);

doSomethingElse(obj1);
print(obj1.str);
}



void doSomething(MyClass obj){
obj.str = 'obj1 new string';
}

void doSomethingElse(MyClass obj){
obj = MyClass('obj1 new object');
}

这将打印

obj1 initial
obj1 new string
obj1 new string

但是,如果我想让 doSomethingElse() 实际修改 obj1 所引用的内容,那么输出将是:

obj1 initial
obj1 new string
obj1 new object

这在 Dart 中是否可行,如果可行,如何实现?

最佳答案

不,Dart 不通过引用传递参数。 (如果没有像 C++ 的复杂类型系统和规则这样的东西,如果调用者没有将参数绑定(bind)到变量,它会如何工作还不清楚。)

您可以改为添加一个间接级别(即,将 obj1 放入另一个对象中,例如 ListMap 或你自己的类(class))。另一种可能性是使 doSomethingElse 成为一个嵌套函数,然后它可以直接访问和修改封闭范围内的变量。

关于dart - 是否可以修改 Dart 中参数的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55276882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com