私はリストを持っており、関数内のいくつかの要素を削除したい。私は削除したい要素をその関数に構造体として渡します。私は関数ListFilter
を使ってリストを反復することができると思った。この関数に引数として関数を渡すので、私はArguments
のスコープに私のcffunction
がアクセスできるか疑問に思っています。このクロージャは "外部"変数にアクセスできますか?これらはどの範囲に存在しなければなりませんか?cffunctionでListFilterを使用する可能性
<cffunction name="funcA" returntype="string">
<cfargument name="struExcludeCols" type="struct">
<cfset local.strLst = "Listel1,Listel2,Listel3">
<cfscript>
local.columnNames = ListFilter(
strLst,
function(strCol) {
return not StructKeyExists(Arguments.struExcludeCols, strCol);
}
);
</cfscript>
<cfreturn local.columnNames>
</cffunction>
<cfdump var="#funcA({ "Listel2" = 1 })#">
あなたはclosure' 'とはどういう意味ですか? –
@DanBracuk Closureは第2引数として 'ListFilter'に渡す「インライン関数」です。 –
ちょうどこのstackoverflowの投稿を参照してください:https://stackoverflow.com/questions/220658/what-is-the-difference-between-a-closure-and-a-ambda 'クロージャ[...]そのパラメータリストには '。これは私の場合は機能しないので、閉鎖ではありません。 ;)それで 'ラムダ '。 –