0

ColdFusion では、明示的なスコープ設定が良いことだと理解しています。これを学んだので、クエリのような変数であっても、すべての変数を明示的にスコープしようとし<cfquery name="local.myQuery">ます<cfquery name="variables.myQuery">

私の質問は、同じページでのみ使用される .CFM ページ内で関数を定義するときに明示的なスコープを行う方法です。私は<cffunction name="variables.myFunction">何かをすることができますか?

4

3 に答える 3

0

ColdFusion の関数はさまざまなスコープ (デフォルトはvariables) に存在できるという事実にもかかわらず、それを変更したり操作したりしないでください。コンポーネントを使用してカプセル化を適用するか、variablesスコープ内に残します。同じ名前の関数を (同じ .cfm または含まれているもので) 定義しようとすると、エラーが発生しますが、それは問題ないはずなので、そのような関数を上書きすることはできません。

関数内の変数をスコープする必要があります。関数の名前をスコープするのではなく、内部の変数をスコープします。localスコープまたはvarプレフィックスを使用することをお勧めします。

<cffunction name="foo">
 <cfset var a = 123>
  <cfset local.b = 345>
</cffunction>

Lucee では、関数のスコープ全体をグローバルに定義できます。localmode="modern"

function foo()localmode="modern"{...}
于 2019-09-15T19:04:01.930 に答える