2015-11-01 12 views
6

Zawsze staram się używać słowa kluczowego var w funkcjach korzystających z CF, ale jedno prawdopodobnie głupie pytanie, jakie mam, to jak często trzeba z niego korzystać?Słowo kluczowe var w trybie coldfusion i ile razy go używać

Przykład:

<cfset var local = ""> <!-- set at the top of the function --> 

<!-- then later in the function --> 
<cfset var local.firstname = "steve"> 
<cfset var local.lastname = "smith"> 
<cfset var local.email = "[email protected]"> 

jest to przypadek każdym razem piszesz zmienną trzeba ustawić słowa kluczowego, czy tylko pierwsze wystąpienie niego stosowany wewnątrz funkcji?

Czy jest to tak samo jak

<cfset var local = ""> <!-- set at the top of the function --> 

<!-- then later in the function --> 
<cfset local.firstname = "steve"> 
<cfset local.lastname = "smith"> 
<cfset local.email = "[email protected]"> 

Odpowiedz

3

Nie musisz używać „var” słowa kluczowego dla zmiennych, które są w „lokalnym” zasięgu. Ponieważ "lokalny" jest strukturą, wszyscy jego członkowie są częścią tego samego zakresu.

Zasadniczo "lokalna" struktura to po prostu kontener przechowujący wszystkie zmienne, które muszą znajdować się w zasięgu lokalnym funkcji.

UPDATE: AS z CF9 local jest wyraźny zakres skorzystanie trzymać funkcja scoped zmienne, bez deklarowania. Zwykle wpisuję wielkie litery, ale to kwestia gustu.

<cfset LOCAL.firstname = "steve"> 
<cfset LOCAL.lastname = "smith"> 
<cfset LOCAL.email = "[email protected]"> 

W ColdFusion 8 i zanim byś zazwyczaj definiują local struct na szczycie swojej funkcji:

<cfset var LOCAL = structNew() /> 

Jednakże można wybrać dowolną inną nazwę dla tej struktury.

+1

Podejrzewam, że patrząc na starszego kodu, który używany 'var local = ...' zamiast formalnego zasięgu lokalnym (wprowadzone w CF9 +) . * Więc drugi z twoich przykładów jest w porządku. * W rzeczywistości drugi przykład nie jest poprawny w CF11. LOKAL to zakres formalny (tj. Struktura). Próba nadpisania tej struktury systemu pustym łańcuchem spowoduje błąd. – Leigh

5

Którą wersję ColdFusion używasz? Ponieważ ColdFusion 9 local jest zasięgiem, więc nie ma sensu go specjalnie tworzyć.

Aby odpowiedzieć na pytanie: wszystkie zmienne lokalne funkcji muszą zostać aktywnie przypisane do lokalnej funkcji. ColdFusion nie robi tego automatycznie.

Można to zrobić na dwa sposoby. Poprzez var słów kluczowych:

var someVar = someValue; 

lub poprzez zakres local:

local.someVar = someValue; 

są zdezorientowani w swoich przykładach, co zmienna jest. Biorąc pod uwagę ten kod:

var myStruct = {}; 
myStruct.someKey = "some value"; 

W tym examply myStruct jest zmienna. myStruct.someKey nie jest zmienną dyskretną, jest jedynie podkluczem zmiennej myStruct. Więc to nie ma sensu:

var myStruct = {}; 
var myStruct.someKey = "some value"; 
0

Jeśli nie korzystasz z zakresu lokalnej, trzeba tylko użyć słowa kluczowego var raz na zmiennej.

Zostałem wprowadzony do funkcji zdefiniowanych przez użytkownika w wersji 7.1.Nie mam pewności co do innych wersji, ale w tym przypadku trzeba było var wszystkie zmienne zaraz po znacznikach cfargument, zanim zostaną wykonane jakiekolwiek inne polecenia. Innymi słowy, było dobrze.

<cffunction etc> 
<cfargument name = "arg1"> 
<cfset var x = 0> 
<cfquery> 
sql goes here 
</cfquery> 
<cfset x = 3> 

ale byłoby wyrzucić błąd:

<cffunction etc> 
<cfargument name = "arg1"> 

<cfquery> 
sql goes here 
</cfquery> 
<cfset var x = 3> 
Powiązane problemy