【发布时间】:2018-03-22 22:47:26
【问题描述】:
我有以下代码,它首先创建一个对象,然后调用一个名为 init 的函数。
<cfset SESSION.objWatchlist = createObject("component", "path") />
<cfset SESSION.objWatchlist.init(session.addressid) />
到目前为止一切顺利。 init 函数如下所示:
<cffunction name="init" access="remote" output="false">
<cfargument name="addressID" type="numeric" required="true" />
<cfset THIS.ADDRESSID = arguments.addressID />
<cfset THIS.WATCHLIST = arrayNew(1) />
<cfset initWatchlistArray() />
<cfreturn this />
</cffunction>
现在我想向 cffunction 添加另一个参数。我会这样称呼它:
<cfset SESSION.objWatchlist.init("addressid", session.addressid) />
和
<cfset SESSION.objWatchlist.init("sessionid", session.sessionid) />
我在 cffunction 中添加了一些新行:
<cffunction name="init" access="remote" output="false">
<cfargument name="typeOfID" type="string" required="true" />
<cfif arguments.typeOfID eq "addressid">
<cfargument name="addressID" type="numeric" required="true" />
<cfset THIS.ADDRESSID = arguments.addressID />
<cfelseif arguments.typeOfID eq "sessionid">
<cfargument name="sessionID" type="string" required="true" />
<cfset THIS.SESSIONID = arguments.sessionID />
</cfif>
<cfset THIS.WATCHLIST = arrayNew(1) />
<cfset initWatchlistArray() />
<cfreturn this />
</cffunction>
但每次我收到错误“标签必须嵌套在 CFFUNCTION 标签内”。
现在我的问题是如何编写第二个参数基于第一个参数的函数?
这可能吗?
谢谢。
【问题讨论】:
-
如果您要在
this范围内拥有变量,请在函数外部声明它们。您可以在函数内为它们赋值。关于实际问题,声明所有参数并将任何逻辑转移到函数的后面。 -
@DanBracuk:感谢您的回答。你有这方面的例子吗?
-
有点跑题了。这种类型的代码应该在
<cfscript>中。它会更容易阅读。
标签: function coldfusion arguments