Avatar billede jesper27 Nybegynder
23. august 2001 - 16:43 Der er 6 kommentarer og
1 løsning

Call keyword

Er der noget argument for benytte keyword \'Call\' overhovedet (performance etc.) i ASP eller VB?

Eks.

Call conn.Open (sqlNew, conn, adOpenForwardOnly, adLockReadOnly)

Frem for

conn.Open sqlNew, conn, adOpenForwardOnly, adLockReadOnly

Mvh
Jesper
Avatar billede nute Nybegynder
23. august 2001 - 16:48 #1
fra dokumentasjonen:

You are not required to use the Call keyword when calling a procedure. However, if you use the Call keyword to call a procedure that requires arguments, argumentlist must be enclosed in parentheses. If you omit the Call keyword, you also must omit the parentheses around argumentlist. If you use either Call syntax to call any intrinsic or user-defined function, the function\'s return value is discarded.


med andre ord. Hvis du bruker call, så skal du sette paranteser () på dine funksjonskall.

En annen ting er at det gjør koden enklere å lese for andre.

/nute
Avatar billede Slettet bruger
23. august 2001 - 17:08 #2
Call.. vil det sige, at det Connectio, eller RecordSet objekt, der returneres... _ikke_ returneres?

Jeg mener.. Call returnerer jo ingenintg.

Nu har jeg forvirret mig selv... jeg vender tilbage når jeg har haft OOP et semester mere...
Avatar billede kasperxb Nybegynder
23. august 2001 - 17:13 #3
Jesper

det virker ikke umiddelbart ret smart at bruge call når du kalder en metode på et objekt som du gør ved conn.open
derimod hvis du har subs eller functions som ikke har parametere kan det se mere læsevenligt ud feks:
Sub CallMe()
  Response.Write \"HuUU\"
End Sub

Sub Main()
  Call CallMe
End Sub
\'istedet for
Sub Main()
  CallMe
End Sub

jeg håber det forklarede det lidt
Avatar billede nute Nybegynder
24. august 2001 - 09:43 #4
smajli >> dette har da ingenting med OOP å gjøre !!

kasperxb >> hvorfor er det ikke smart å bruke call når man kaller en metode på et objekt ?? Så lenge man har et metodekall *kan* man bruke call (personlig mener jeg at man *bør* bruke call på ethvert metodekall fordi det øker lesbarheten av koden.

Hvis dere leser min første posting, så står det svart på hvitt at hvis man bruker \'Call\' ved et metodekall så *skal* metodens parametre settes i paranteser, og hvis man ikke bruker \'Call\' så skal man *ikke* skrive metodens parametre i paranteser. Hvis man ikke har noen parametre til metoden, men allikevel bruker \'Call\', så skal man kun skrive tomme paranteser.

Med andre ord, hvis man har metoden (function):

function detteErEnTest( param1, param2, param3 )
  detteErEnTest = \"Hurra\"
end function

så *kan* den kalles med bruk av \'Call\':

Call detteErEnTest(\"test\",\"test\",\"test\")

(( Legg merke til parantesene rundt parameterne ))

eller *uten* bruk av \'Call\':

Call detteErEnTest \"test\",\"test\",\"test\"

((paranteser er utelatt ))

Bruk av \'Call\' er valgfritt, men som sagt...det øker lesbarheten av din kode.

/nute

Avatar billede jesper27 Nybegynder
24. august 2001 - 09:48 #5
Så vidt jeg kan se gør \'Call \' koden mere gennemskuelig.

Se eksemplet nedenfor.

Function atest(a, b, c)
Avatar billede jesper27 Nybegynder
24. august 2001 - 09:56 #6
Fortsætter lige efter et uheldigt musetryk:

Function atest(a, b, c)
  If c = \"\" then
    blablabla
  Else
    blablabla
  End if
End Function

Hvis man kalder denne function uden call kan den se således ud:

atest 2, \"Truncate\"

og man aner ikke hvad der sker i functionen, medmindre man læser functionen atest (hvilket man dog selvfølgelig bør gøre).

Kalder man derimod functionen med:

Call atest(2,\"Truncate\",1)

Bliver man i det gjort opmærksom på argumenterne, hvilket jeg mener er meget nyttigt i en copy/paste situation.

Anyway, er der nogen performance forskel?
Avatar billede nute Nybegynder
24. august 2001 - 10:01 #7
jesper27 >> performance er den samme
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester