我有一个函数可以通过电子邮件在数据库中查找用户并返回一个包含他们的 ID、电子邮件和散列密码的结构。但是由于 ColdFusion 缺少 null/nil/none 类型,我不知道如果用户不存在该返回什么。
我的第一个解决方案是返回 false
,然后只使用 if(user == false)
来查看用户是否存在,但是 ==
和 是
,ColdFusion 将尝试将有效的用户结构转换为 bool 值,并在无法转换时抛出错误。
我的第二个解决方案是只return;
没有值,但是我的检查变成了if(isDefined("foo"))
。在我看来,这看起来很丑陋,并且让重构变得有点棘手,因为变量名现在也在一个字符串中......
在 ColdFusion 中是否有一种干净的方法来返回“未找到”值?
最佳答案
自 CF9 以来,CF 具有 isNull()
,例如:
<cffunction name="getUser">
<cfargument name="userID">
<cfquery name="qUser">
SELECT * FROM users where userID = <cfqueryparam value="#userID#">
</cfquery>
<cfif qUser.recordCount>
<cfreturn {name=qUser.name}>
</cfif>
</cffunction>
<cfset var user = getUser(1)>
<cfif isNull(user)>
<!-- user not found -->
<cfelse>
Welcome #user.name#
</cfif>
关于coldfusion - 在 ColdFusion 中返回 'nil' 值的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17868258/