背景
当我尝试将可选参数传递给另一个函数时遇到问题。被调用的函数也有可选参数,所以我试图让这种可选性一直传播。
我遇到的问题是,由于冷聚变没有 null 的概念(或者至少不是真的),当省略可选参数时,它实际上不存在。
component accessors=true output=false persistent=false {
public void function foo(String otherOptional, String optional1,String optional2 ){
//Other code
//Other code
//Other code
bar(optional1=optional1,optional2=optional2);
}
public void function bar(String optional1, String optional2 ){
//Other code
}
}
例如在上面的代码中,如果foo
在没有任何参数的情况下调用我会收到错误
Variable OPTIONAL1 is undefined.
The error occurred in D:/web/experimental/OptionalTest.cfc: line 11
9 :
10 : //Other code
11 : bar(optional1=optional1,optional2=optional2);
12 :
13 : }
问题
有没有办法将可选参数传递给另一个函数,它们也是可选的而不会导致错误?
我考虑过的解决方案是:
- 路过
argumentcollection=arguments
。但这似乎非常令人不快,因为它很难读取 bar 真正需要哪些参数(我尝试过调试这样的代码,这并不有趣)。foo
如果and使用不同的参数名称,它也不起作用bar
- 一系列 if StructKeyExists 语句仅传递可选参数(如果存在)。这会起作用,但很快就会变得非常复杂。