你能在AS3函数中使用"ByRef"参数吗?

Rob*_*cks 5 args actionscript-3 byref

知道如何从ActionScript 3中的函数返回多个变量吗?

像VB.NET,你可以修改输入参数的变量(ByRef参数)吗?

Sub do (ByRef inout As Integer)
 inout *= 5;
End Sub

Dim num As Integer = 10
Debug.WriteLine (num)        '10
do (num)
Debug.WriteLine (num)        '50
Run Code Online (Sandbox Code Playgroud)

除了返回关联数组之外的任何东西?

return {a:"string 1", b:"string 2"}
Run Code Online (Sandbox Code Playgroud)

dkr*_*etz 15

引用谷歌来源:

在ActionScript 3.0中,所有参数都通过引用传递,因为所有值都存储为对象.但是,属于原始数据类型的对象(包括Boolean,Number,int,uint和String)具有特殊的运算符,使它们的行为就像它们按值传递一样.

这导致我查找规范来源.


Rob*_*cks 6

似乎字符串,整数,单位,布尔值都是通过值传递的. 我在Flash中尝试了这个小片段,结果是否定的:

function func(a:String){
    a="newVal";
}

var b:String = "old";

trace(b)    //  old
func(b);
trace(b)    //  old
Run Code Online (Sandbox Code Playgroud)

那么...... String也是列入黑名单的数据类型吗?布尔也呢?我的意思是什么方式告诉哪些类型通过引用传递?


Lir*_*una 3

除了 [u]int 之外,AS3 中的所有内容都是引用。概括地说,继承的所有内容都Object将通过引用传递给函数。

Array话虽如此,我相信您可以做到这一点的唯一方法是使用像or a String(“5”并进行转换+数学)这样的容器类。