三元运算符炸毁

Moh*_*mad 2 coldfusion ternary-operator coldfusion-9

我希望在Coldfusion中对以下三元运算符(不断发展)的语法有所帮助:

iif(structKeyExists(session, "newUser") ? session.newUser.planId : 0)
Run Code Online (Sandbox Code Playgroud)

它是以下模型调用的一部分:

user = model("user").new(UUID=createUUID(), planId=iif(structKeyExists(session, "newUser") ? session.newUser.planId : 0));
Run Code Online (Sandbox Code Playgroud)

然而,它不断爆炸:

IIF功能的参数验证错误.该功能需要3个参数.

Don*_*nut 9

根据Adobe的文档,函数语法iif如下所示:

IIf(condition, string_expression1, string_expression2)
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下,你会这样称呼它:

iif(structKeyExists(session, "newUser"), session.newUser.planId, 0)
Run Code Online (Sandbox Code Playgroud)

这与三元运算符(?:)不同,后者在此处描述并遵循以下语法:

(Boolean expression)? expression1 : expresson2
Run Code Online (Sandbox Code Playgroud)

在您的情况下,这将是这样的:

planId=structKeyExists(session, "newUser") ? session.newUser.planId : 0
Run Code Online (Sandbox Code Playgroud)