webForumDet fria alternativet

Function eller Sub?

ASPur ASP

2 svar · 233 visningar · startad av J.N.

Medlem sedan apr. 20031 660 inlägg
Frågan#1

HEJ!

Jag har en bläddringsfunktion där man bläddrar mellan kapitel. Den sida man är på finns i 'page'.

Eftersom det finns många kapitel vill jag få både kapitel fram och bak i samma Case-sats, för att slippa upprepa det två gånger...

Men, hur gör man det på rätt vis?

Jag kan skicka med en flagga till funktionen för att berätta vilken variabel jag vill ha utskriven, men så gör man väl inte?

Function chapter(a,b)
	'a: aktuell sida, b: 0/1-olika utskrift
	Select Case a
	Case 1
		prevchap=64
		nextchap=2
	Case 2
		prevchap=1
		nextchap=8
        osv
        End Select
        if b=0 then response.write prevchap else response.write nextchap
End Function

Kallas via <a href="?page=<%chapter(page)%>">bläddra</a>

Testade snabbt med Sub, som jag aldrig använt tidigare, och då fungerar det som jag vill, men har jag använt Sub rätt?

Sub chapter(a)
	'a: aktuell sida
	Select Case a
	Case 1
		prevchap=64
		nextchap=2
	Case 2
		prevchap=1
		nextchap=8
        osv
        End Select
End Sub

Kallas via <a href="?page=<%nextchap%>">framåt</a> och
jag sätter chapter(page) på lämpligt ställe i koden.
Medlem sedan juni 200032 967 inlägg
#2

Funktioner skall returnera någonting, annars finns det ingen anledning att använda en funktion. Ska du inte returnera någonting, använd en sub.

Ditt första exempel, om jag hade gjort det som en funktion, skulle sett ut så här:

Function chapter(a,b)
	'a: aktuell sida, b: 0/1-olika utskrift
	Select Case a
	Case 1
		prevchap=64
		nextchap=2
	Case 2
		prevchap=1
		nextchap=8
                osv
                End Select
                if b=0 then chapter = prevchap else chapter = nextchap
End Function

Kallas via <a href="?page=<%=chapter(1,0)%>">bläddra</a>

Ditt andra exempel, sub-exemplet, förstår jag inte riktigt. Använd en funktion som ovan till exempel, och låt funktionen returnera ett värde.

Mvh

Medlem sedan apr. 20031 660 inlägg
#3

HEJ!

Okej, jag är med, jag satte en response.write istället för att returnera något.
Eftersom jag inte gillade min flagga, testade jag med en Sub istället, för att se om det fungerade bättre/blev snyggare.
Snyggare blev det, fast inte rätt kodat = fel ändå alltså.

Felet är alltså att jag inte returnerade något, utan skrev ut det istället.
Eftersom du använder en flagga som du gör, är det alltså rätt att använda den på detta vis, var osäker på detta också.

Som det står på http://www.devguru.com/Technologies/vbscript/quickref/sub.html ska inte Sub returnera något, men eftersom det fungerade ville jag ha bekräftelse om vilket som var rätt.

Sub:en använder jag som en slags include-fil, skriver kallelsen, sub:en sätter två variabler, som sedan skrivs ut. Men felaktigt alltså.

127 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)