バックグラウンド
オプションの引数を別の関数に渡そうとすると問題が発生します。呼び出される関数にはオプションの引数もあるため、そのオプション性をずっと伝播させようとしています。
私が経験している問題は、オプションの引数が省略された場合、常温核融合には 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
また、 と で異なる引数名が使用されている場合も機能しません。bar
- オプションの引数が存在する場合にのみ渡すための一連の if StructKeyExists ステートメント。これは機能しますが、非常に複雑になる可能性があります。