我有一个类似这样的课程
public class Foo {
public var f:Function;
public void method(s:String)
{
f.invoke(s);
}
}
所以我需要为f
分配一个带有参数f(s)
的函数,比如
myFoo.f = thefunction
function(s:String)
如何做到这一切,以便它能正常工作?
答案 0 :(得分:4)
只是添加一个很好的例子:
import mx.events.FlexEvent;
public var f:Function;
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
f = addSmile;
method(' my string');
f = addFrown;
method(' my string');
// Or you can do it straight like this:
f(' my string');
// Or alternatively write a function for replacing f
makeF(addSmile);
f(' my string');
}
public function method(s:String):void
{
f(s);
}
private function addSmile(s:String):void
{
trace (s+' :)');
}
private function addFrown(s:String):void
{
trace (s+' :(');
}
protected function makeF(newF:Function):void
{
f= newF;
}
将输出
my string :)
my string :(
my string :(
my string :)
答案 1 :(得分:3)
如果你有意义,怎么做匿名函数......
myFoo.f = function( s : String ) {
//do Stuff to string
}
然后你可以使用上面的代码。
答案 2 :(得分:2)
你不应该指向任何地方,你的函数需要一个String参数。如果它需要 int ,或者需要2个参数,那么这将是一个运行时错误。
myFoo.f = myFunction;
public void function myFunction(s: String): void
{
}
public class Foo {
public var f:Function;
public void method(s:String)
{
f(s);
}
}