【问题标题】:actionscript3 function parameter modifier. Is it possible? [duplicate]actionscript3 函数参数修饰符。是否可以? [复制]
【发布时间】:2014-07-29 17:09:28
【问题描述】:

我试图搜索,但没有找到任何东西。我使用链接通过 C++ 中的参数修改数据。例如,在 C# 中,我可以这样使用:

bool foo(ref string r)
{
    r+= " is text";
}

bool bar()
{
    string s = "text";
    foo(ref s); // and now s == "text is text"
}

可以在actionscript3中做到吗?

【问题讨论】:

标签: actionscript-3 flash apache-flex parameters actionscript


【解决方案1】:

你只能这样做:

function foo(r:String):String {
    return r += " is text";
}

function bar():void {
    var s1:String = "text";
    var s2:String = foo(s1);
    trace(s2); // text is text
}
bar();

为了说明 MasterRoro 所说的,同样的例子是 object 不属于原始数据类型,即 passed by reference

function foo(r:Object):void {
    r.x += " is text";
}

function bar():void {
     var s:Object = {x:"text"};
     foo(s);
     trace(s.x); // text is text
}
bar();

【讨论】:

    【解决方案2】:

    据我所知,您不能在 AS3 中执行此操作,而不像之前的海报所说的那样为原始变量分配返回值。如果传递的参数是原始数据类型(字符串、整数、数字、布尔值等),它将是一个副本而不是引用。所以在函数体中改变它不会在外面改变它。

    function foo(r:String):void{
       r += 'is text';
    } 
    
    function bar():void{
        var s:String = "text";
        foo(s);  // s == "text"
    }
    

    只有数组、对象等作为引用传递。因此,一种方法是操纵对象的属性。或者只使用返回值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-08
      • 1970-01-01
      • 2014-06-03
      • 1970-01-01
      • 1970-01-01
      • 2015-12-19
      • 2018-08-24
      • 2013-01-14
      相关资源
      最近更新 更多