位置参数传递

时间:2012-05-10 01:58:17

标签: actionscript-3 flex actionscript

我有一个方法

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

我希望text获取默认值,并传入其他两个参数的值。我想知道是否有某种方法可以称之为

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

很抱歉,如果这个问题非常基本,我刚开始接受Actionscript,而我的谷歌搜索技巧有限,并没有带来任何丰硕的成果。

3 个答案:

答案 0 :(得分:1)

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

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

这种做法首先违背了违约的目的。一般来说,我会先把所需的项目放在一起来组织我的方法签名。具有可能在下一次更改的默认值的项目;最后具有不太可能改变的默认值的项目。

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

答案 1 :(得分: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

答案 2 :(得分: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);
}