2009-08-11 36 views
5

Bir varargs işlevini çağırmam gerekiyor: ActionScript'te bir diziyle varargs işlevini nasıl çağırabilirim?

function doSomething(... args): Object { 
    // do something with each arg 
} 

Ancak, bu argümanları dinamik olarak yapıyorum:

var someArgs: Array = ['a', 'b', 'c']; 
doSomething(someArgs); 

Sorun şu ki, bu şekilde işlev çağırdığımda args bitiyor ilk eleman olarak someArgs ile 1 elemanlı bir dizi olmak, üç elemanlı bir dizi değil.

doSomething öğesini argüman dizisi olarak someArgs ile nasıl arayabilirim?

(Arama motorları için, bu paketten çıkıyor)

+1

Not: buna "argüman açma" denir. Bu terimi için google'u ve ayrıca actioncript'i ararsanız konuyla ilgili birkaç tartışma bulacaksınız. Brian'ın .apply kullanma önerisi doğru IMO'dur. –

+0

Tebrikler, zaten "actionscript argümanı açma" altında google'da # 3 sonuç var :) – Rydell

+0

İyi efendim. SO.com gerçekten iyi olmalı, mm mi? –

cevap

9

Kullanım Function.apply (arama motorları için bu ambalajından çıkardıktan argümanı). Bunun gibi

:

doSomething.apply(null, someArgs); 

doSomething bir sınıfın bir yöntemdir, bunun yerine null sınıfta geçerler.

+1

aslında, fark etmez, sınıfta/örnekte geçip geçmediğiniz ... AS3, otomatik olarak yöntem kapanışları oluşturur, burada "bu" her zaman yöntemin sahibi olarak atanır ... – back2dos

+0

Bunu yaklaşık olarak buldum. gönderdikten sonra dakika. Yine de cevap veren herkese rep sağlardım ve SO.com'da olması güzel. –

İlgili konular