Actionscript 3 Actionscript 3.0交换 是否可以在ActionScript 3中实现类似于C++ STD::SWAP的交换例程? 我是说 public static function Swap(var a, var b):void { var c = a; a = b; b = c; }
然后Actionscript 3 Actionscript 3.0交换 是否可以在ActionScript 3中实现类似于C++ STD::SWAP的交换例程? 我是说 public static function Swap(var a, var b):void { var c = a; a = b; b = c; },actionscript-3,swap,Actionscript 3,Swap,然后 var a:int = 3; var b:int = 5; Swap(a,b); trace(a, " ", b); // there must be 5 3 对于整数,它不能“按原样”工作,因为它们是按值传递的,而不是按引用传递到交换例程中。遗憾的是,Actionscript总是按值传递基本体,总是按引用“”传递对象(如果我错了,有人会纠正我) 您可以做的是将基本体包装到对象中 var A:Object = {"value":3}; var B:Obje
var a:int = 3;
var b:int = 5;
Swap(a,b);
trace(a, " ", b); // there must be 5 3
对于整数,它不能“按原样”工作,因为它们是按值传递的,而不是按引用传递到交换例程中。遗憾的是,Actionscript总是按值传递基本体,总是按引用“”传递对象(如果我错了,有人会纠正我) 您可以做的是将基本体包装到对象中
var A:Object = {"value":3};
var B:Object = {"value":5};
Swap(A, B);
trace(A.value, B.value);
function Swap(a:Object, b:Object):void
{
var temp:Object = a.value;
a.value = int(b.value);
b.value = int(temp);
}
我知道。。。这是丑陋的,不适合在大多数情况下
事实上,事实并非如此,因为引用是不同的,但指向同一对象,与原语相反,引用指向不同的原语值。不幸的是,您不能以这种方式实现交换,因为ActionScript 3、Java和许多其他语言。该链接将为您提供详细信息,但基本上这意味着函数内部的引用与函数外部的引用不同(即使它们确实引用了相同的对象)。因此,在函数中修改参数引用在函数外没有任何效果。您必须在线进行交换 如果函数中确实需要某些交换行为,则必须将参数包装到另一个对象中,然后可以更改内部引用:
public static function Swap(var a, var b)
{
var c = a.value;
a.value = b.value;
b.value = c;
}
如果可以对SWF进行后处理,则可以使用创建
宏
:
它甚至已经存在到位宏中的交换方法
: