Взрыв троичного оператора - PullRequest
2 голосов
/ 19 апреля 2011

Мне нужна помощь с моим синтаксисом для следующего троичного оператора (который продолжает дуть) в Coldfusion:

iif(structKeyExists(session, "newUser") ? session.newUser.planId : 0)

Это часть следующего вызова модели:

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

Однако он продолжает взрываться:

Ошибка проверки параметра для функции IIF.Функция принимает 3 параметра.

1 Ответ

9 голосов
/ 19 апреля 2011

Согласно документации Adobe , синтаксис функции для iif выглядит следующим образом:

IIf(condition, string_expression1, string_expression2)

Итак, в вашем случае вы бы назвали это так:

iif(structKeyExists(session, "newUser"), session.newUser.planId, 0)

Это отличается от троичного оператора (?:), который описан здесь и имеет следующий синтаксис:

(Boolean expression)? expression1 : expresson2

Что, в вашем случае, выглядело бы так:

planId=structKeyExists(session, "newUser") ? session.newUser.planId : 0
...