0

我有一个方法

public function show (text:Object="", title:String="", body=String=""){
    //blah
}

我希望文本获取默认值,并传入其他两个参数的值。我想知道是否有某种方法可以这样称呼它

show(title="sample", body="xyz");

对不起,如果这个问题真的很基础,我刚开始学习 Actionscript,我有限的谷歌搜索技能并没有返回任何富有成果的结果。

4

3 回答 3

1

没有办法做到这一点。除了手动发送默认值:

show ("", "sample", "xyz");

这首先违背了违约的目的。通常,我会尝试通过将所需项目放在首位来组织我的方法签名;具有接下来可能会更改的默认值的项目;最后是具有不太可能更改的默认值的项目。

这并不总是一个微不足道的决定。

于 2012-05-10T02:14:33.087 回答
1

与其他答案相比,您可以这样做:

public function show(params:Object):void
{
    var text:String = params.text || "";
    var title:String = params.title || "";
    var body:String = params.body || "";

   // blah
}

进而:

show({ title: "sample", body: "xyz" });

出于与代码可读性和可维护性相关的原因,我当然建议不要这样做,但它仍然是有用的信息。

如果您决定使用这种方法,请务必清楚地记录您的方法,例如

// Relevant keys for params:
// text:String, title:String, body:String
// ...describe each here
public function show(params:Object):void
于 2012-05-10T02:54:18.230 回答
0

您不能在动作脚本中执行此操作

show(title="sample", body="xyz");

如果我们在 C++ 领域,您可能会重载 show 并拥有 2 个具有不同签名的方法,但您也不能这样做。我通常做的是使用不同的参数制作 2 个方法并调用基本函数:

public function showTextTitleBody(text:Object="",title:String="",body:String="")
{
   //do your thing with the 3 params
}

public function showTitleBody(title:String="",body:String="")
{
   showTextTitleBody("",title,body);
}
于 2012-05-10T02:18:24.810 回答