提供较少的参数

时间:2013-11-10 22:26:14

标签: arguments

我有这段代码:

var obj;
if (!instance_exists(oTextbox)) {
    obj=instance_create(0,0,oTextbox)
    obj.textfont=argument0
    obj.text[0]=argument1 
    obj.text[1]=argument2
    obj.text[2]=argument3
    obj.text[3]=""
}

它是一种绘制文本的简单方法,但是当我用较少的参数调用它时,我得到一个编译错误(预期4个参数提供3), 我只是想要一种能够提供更少参数的方法,因此如果我提供的参数较少,代码将会忽略,并且只会转到最后一行

1 个答案:

答案 0 :(得分:0)

不太确定你的意思,你可以尝试varargs传递可变数量的参数并在使用它们时检查长度:

public void DrawText(Object... args)
{
    var obj;
    if (!instance_exists(oTextbox)) {
        obj=instance_create(0,0,oTextbox);
        int len=args.Length;

        obj.textfont = args[0].toString();
        obj.text[0] = args[1].toString();

        if(len>2){
            obj.text[1] = args[2].toString();
        }

        if(len>3){
            obj.text[2] = args[3].toString();;
        }

        if(len>4){
            obj.text[3] = args[4].toString();
        }
    }
}

假设您始终至少传递两个值,一个用于textfont,另一个用于text[0]