Actionscript 通过引用传递

发布于 2024-09-18 22:13:50 字数 442 浏览 7 评论 0原文

package {
    import flash.display.Sprite;

public class test1 extends Sprite {

private var tmp:Object;

public function test1() {
  createObj(tmp);
  if(tmp == null) {
    trace("nothing changed");
  }
}

private function createObj(obj:Object):void {
  obj = new Object();
}

}
}

在上面的代码中,控制台的输出是:
没有任何改变

为什么?

如果 createObj 的参数是通过引用传递的(即
ActionScript 的默认行为),为什么它没有被修改?

package {
    import flash.display.Sprite;

public class test1 extends Sprite {

private var tmp:Object;

public function test1() {
  createObj(tmp);
  if(tmp == null) {
    trace("nothing changed");
  }
}

private function createObj(obj:Object):void {
  obj = new Object();
}

}
}

In the above code the output on the console is :
nothing changed

Why?

If the argument to createObj was passed by reference(which is the
default behavior of actionscript), why did it not get modified?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

白云不回头 2024-09-25 22:13:50

你没有传递参考。您传递的 null 被分配给局部变量 obj 以在函数内使用。

按值或引用传递参数

通过引用传递意味着
仅对参数的引用是
传递而不是实际值。不
制作实际论证的副本。
相反,对变量的引用
作为参数创建时传递并且
分配给局部变量以供使用
在函数内。

createObj 中,您正在创建一个必须返回的新引用:

public function test1() {
  tmp = createObj();
  if(tmp != null) {
    trace("Hello World!");
  }
}

private function createObj():Object {
  return new Object();
}

You don't pass a reference. You are passing null which is assigned to the local variable obj for use within the function.

Passing arguments by value or by reference:

To be passed by reference means that
only a reference to the argument is
passed instead of the actual value. No
copy of the actual argument is made.
Instead, a reference to the variable
passed as an argument is created and
assigned to a local variable for use
within the function.

In createObj you are creating a new reference which you must return:

public function test1() {
  tmp = createObj();
  if(tmp != null) {
    trace("Hello World!");
  }
}

private function createObj():Object {
  return new Object();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文