Avatar billede c-sharp Nybegynder
17. marts 2004 - 10:21 Der er 12 kommentarer og
1 løsning

Hvorfor kan jeg ikke retunere fra en løkke

Jeg har en løkke

function test

for [et eller andet]
  if [et eller andet] then
      test = true
next

test = false

den vil kun retunere false, hvorfor?
og hvordan kan jeg ellers lave det så jeg kommer ud af løkken så snart at test = true?
Avatar billede michael_stim Ekspert
17. marts 2004 - 10:25 #1
for [et eller andet]
  if [et eller andet] then
      test = true
end if
next
måske?
Avatar billede michael_stim Ekspert
17. marts 2004 - 10:27 #2
for [et eller andet]
  if [et eller andet] then
      test = true
else
test = false
endif
next
Avatar billede nute Nybegynder
17. marts 2004 - 10:28 #3
du kan ikek returnere noget fra en løkke ... du er nødt til at sætte en værdi i en variabel som du kan tjekke for senere:

Dim bTest : bTest = false

for [ et eller andet ]
  if( [noget] ) then
    bTest = true
    exit for
  end if
next

if( bTest ) then
    Response.Write( "Hurra ... [noget] er fundet" )
End if

/nute
Avatar billede michael_stim Ekspert
17. marts 2004 - 10:28 #4
for [et eller andet]
  if [et eller andet] then
      test = true
next
else
test = false
end if
:)
der sad den nok
Avatar billede erikjacobsen Ekspert
17. marts 2004 - 10:32 #5
function test()
  for i=1 to 10
  response.write i & " "
    if i=5 then
        test=true
        exit function
    end if
  next
  test=false
end function

response.write test()
Avatar billede nute Nybegynder
17. marts 2004 - 10:35 #6
michael_stim >> ehh ???

for ..
    if ...
next ...
    else ...

end if

hvad er dette for en latterlig konstruktion ??? måske du skal teste dine forslag inden du poster dem ?!

Desuden ... han beder om at bryde ud af løkken når 'test = true'. *hvis* dit forslag havde fungeret, så ville løkken jo fortsatt til sidste iteration

/nute
Avatar billede nute Nybegynder
17. marts 2004 - 10:36 #7
ahh ... så ikke at det var en function der skulle brydes ud fra ...
Avatar billede c-sharp Nybegynder
17. marts 2004 - 10:39 #8
Det var der godt nok mange forslag til :-)

I skal alle have tak for hjælpen, men jeg bruger erikjacobsens kode!

erikjacobsens> svar bedes :-)
Avatar billede michael_stim Ekspert
17. marts 2004 - 10:43 #9
Det er også den der er den mest korrekte :o)
Avatar billede erikjacobsen Ekspert
17. marts 2004 - 10:45 #10
Tak, jeg samler ikke på point.

Men spørgsmålet er om det er sund programmering at gøre det på den måde. Det vil
selvfølgelig virke, men det er sværere at få rigtigt, at debugge, og at udvide.
Generelt vil jeg anbefale et "single point of exit" fra en funktion, dvs:

function test2(n)
  i=1
  found=false
  while not found and i<=10
    if i=n then
      found=true
    else
      i=i+1
    end if
  wend
  if found then
  test2=true
  else
  test2=false
  end if
end function


response.write test2(51)
Avatar billede michael_stim Ekspert
17. marts 2004 - 10:46 #11
nute>>Det forkerte ben ud af sengen idag :o)
Avatar billede nute Nybegynder
17. marts 2004 - 10:51 #12
michael_stim >> tror jeg ikke ... er bare generelt modstander af at der bliver postet indlæg der overhovedet ikke kan bruges til noget. En simpel test af dit sidste forslag ville hurtig afsløre at det resulterer i en fejl

/nute
Avatar billede c-sharp Nybegynder
17. marts 2004 - 13:41 #13
jamen så lukker jeg igen
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