你能通过cfscript在函数中做可选参数吗?

Lim*_*mey 9 coldfusion coldfusion-9

我终于开始在cfscript中编写东西了,所以我开始编写一些必需的格式化函数.这是一个例子:

    Function FormatBoolean(MyBool, Format) { 

    Switch(Format){
        Case "YES/NO":{
            If (MyBool eq 1)
                Return "YES";
            Else
                Return "NO";
            Break;
        }

        Default:{
            If (MyBool eq 1)
                Return "Yes";
            Else
                Return "";
            Break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想做的是使Format成为可选参数.如果你不包含参数,该函数目前仍然会运行,但它找不到格式,似乎cfparam没有被转换为cfscript.

我是否只需要检查格式是否已定义并为其赋值?或者有更好的方法吗?

谢谢

Ser*_*gii 15

我个人更喜欢将默认值设置为这种参数.另外我有点重构功能......但没有测试过:)

function FormatBoolean(required any MyBool, string Format = "") { 

    switch(arguments.Format) {
        case "YES/NO":
            return YesNoFormat(arguments.MyBool EQ 1);
        default:
            return (arguments.MyBool eq 1) ? "Yes" : "";
    }

}
Run Code Online (Sandbox Code Playgroud)

请注意,(arguments.MyBool EQ 1)可以替换为(arguments.MyBool),因此它涵盖所有布尔值.您可能有兴趣使其更可靠,类似这样(isValid("boolean", arguments.MyBool) AND arguments.MyBool)- 这应该允许检查任何值.