Условное заявление в CFSet - PullRequest
2 голосов
/ 27 июля 2011

Я не могу вспомнить, как это называется, но мне нужно сделать условный оператор внутри оператора CFSet.Я имею в виду что-то вроде следующего:

siteSettings = {
    mailserversmtpport = resourceBean.getValue('mailsmtp'), // SMTP Port (If the method returns no len() then default to 25)
    mailserverpopport = resourceBean.getValue('mailpop'), // POP port (If the method returns no len() then default to 110)
};

Итак, я строю структуру с портом smtp и pop для почтового сервера.У меня есть вызов метода, который получает значение от бина.Если это значение не существует, то оно просто вернет строку длиной 0.Можно ли (в ColdFusion 8) иметь значения 25 и 110, если возвращаемые значения не имеют длины без операторов do cfif?

Ответы [ 3 ]

3 голосов
/ 27 июля 2011

Самый лучший и, на мой взгляд, лучший способ сделать это - добавить два компонента в ваш bean-компонент: getMailSmtp () и getMailPop ().

Поместить туда условную логику - поэтому методвозвращает значение по умолчанию, если оно не указано.

Примерно так:

<cffunction name="getMailSmtp" returntype="string" output="false">
    <cfif len(getValue("mailsmtp"))>
        <cfreturn getValue("mailsmtp") />
    <cfelse>
        <cfreturn 25 />
    </cfif>
</cffunction>

В качестве альтернативы, вы можете изменить свой метод getValue (), чтобы он принимал второй аргумент - значение по умолчанию.Затем, если значение не существует, будет возвращено значение по умолчанию:

resourceBean.getValue("mailsmtp", 25)

Я бы лично пошел на первый метод, так как это означает, что каждый раз, когда вы вызываете getMailSmtp () в вашем приложении,логика применяется.

Вы даже можете комбинировать методы, поэтому ваш метод getMailSmtp () возвращает getValue("mailsmtp", 25).

3 голосов
/ 27 июля 2011
siteSettings = {
mailserversmtpport = iif(len(resourceBean.getValue('mailsmtp')),de(resourceBean.getValue('mailsmtp')),de(25)),
mailserverpopport = iif(len(resourceBean.getValue('mailpop')),de(resourceBean.getValue('mailpop')),de(110))
};
0 голосов
/ 27 июля 2011

Не большой поклонник ИИФ.Вы, вероятно, думаете о троичном операторе.

, который

<cfset x > 3 ? true : false />

Но это только CF9

...