簡體   English   中英

在As3中,是否有一種方法可以修改函數中的類變量(如果將其作為參數傳遞)?

[英]Is there a way, in As3, to modify a class variable within a function, if you have a it passed as a parameter?

這是我的意思的簡單示例:

private var ex:String="day";

......

closeWindows(ex);
trace(ex);//I would like it to trace "night"

......

//this can be in another class, we assume that the "ex" variable can't be accessed directly
private function closeWindows(context:String):void {
  context = "night"
}

我不知何故需要將引用而不是值本身傳遞給“ closeWindows”方法。

非常感謝您的任何幫助。 謝謝。

不幸的是,AS3不支持通過引用傳遞基元。 因此,您是對的,一種典型的解決方案是對原始數據使用某種包裝,例如在this Question中

可能您已經意識到了這一點,但是在Actionscript中,參數始終按值傳遞。 因此,除非使用某些臨時包裝(對象,數組或其他任何東西),否則您無法做任何事情。

但是,您不能只返回並重新分配新字符串嗎?

謝謝你們兩個的回答,最后似乎沒有辦法將變量作為引用而不是值傳遞。 但是,您可以傳遞一個函數作為參考,因此這是我的一點“獲取/設置”技巧。

private var ex:String="day";

                    ......

                    closeWindows(setEx);
                    trace(getEx());

                    ......


                    private function getEx():String {
                        return ex;
                    }

                    private function setEx(value:String):String {
                        ex = value;
                    }


                    private function closeWindows(context:Function):void {
                        context.call(null, "night");
                    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM