Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: VB.Net, Aliohjelma aliohjelmassa??

Sivun loppuun

novice [09.01.2009 13:21:06]

#

Onko mahdollista tehdä aliohjelmaa toisen aliohjelman tai funktion sisään?

Tein funktion joka käyttää useasti erästä ehtolauserimpsua ja selkeyden vuoksi haluaisi laittaa kyseisen rimpsun aliohjelmaan.


EDIT: Keksin jo miten pärjään vain kolmella ehtolauserimpsulla, mutta jääköön kysymykseksi mielenkiinnon vuoksi.

Grez [09.01.2009 16:17:04]

#

Tottakai aliohjelmasta voi kutsua aliohjelmaa. Eihän tässä pitäisi olla mitään ongelmaa.

novice [09.01.2009 21:27:10]

#

Ei vaan tarkoitan, että voinko rakentaa aliohjelmaa toisen aliohjelman sisälle. Esim:

function jokuvaan()
'
call subsub()
'
'koodia
'
call subsub()
'
'
exit function

sub subsub() 'siis tätä aliohjelmaa kutsuttaisiin, ja vain tästä functiosta
'
'koodia
'
end sub

end function

Näin tuskin voi tehdä sillä eikös tuo 'exit function' keskeytä koko funktion palauttamatta kutsuvaan ohjelmaan mitään?

Ajan tässä takaa sitä, että voiko aliohjelmassa useasti toistuvia rivejä kutsua jotenkin muuten kuin erillisestä aliohjelmasta? Ainahan sen aliohjelman voi tehdä...mutta...

vehkis91 [09.01.2009 21:39:34]

#

miten ois silmukka?

novice [09.01.2009 23:55:57]

#

Ääh.. eikun... öh, olisi ehkä pitänyt jättää kysymättä, kun tiedät itsekkin melko varmasti, että vastaus on ei...

Grez [10.01.2009 09:19:41]

#

Siis toi sun koodiesimerkkihän toimii mainiosti, kun vaan siirrät ton "end function" rivin ennen tuota "sub subsub()" riviä.

Jos taas tarkoitit että toi subsub ei saa näkyä muille saman moduulin (tms) funktioille, niin miksi se ei sais näkyä? Kai sulla nyt on sen verran itsehillintää, että pystyt olemaan kutsumatta sitä muista funktioista? Jos ei ole, niin ainahan voit laittaa tuon funktion erilliseen moduuliin.

novice [10.01.2009 11:31:16]

#

Juuri tuota tarkoitin Grez. Eikä minulla tämän kanssa mitään ongelmaa ole...kunhan kysyin.

Ja vastaus on siis EI?

Grez [10.01.2009 12:35:49]

#

No siis vastaus on, että aliohjelma ei voi olla määritelty toisen aliohjelman sisällä.

Mutta alkuperäisestä viestistäsi saa kyllä käsityksen, että haluaisit tehdä jotain, joka ei mielestäsi onnistuisi ilman ja kerroit vielä että olit kehittänyt siihen jonkin workaroundin.

novice kirjoitti:

Tein funktion joka käyttää useasti erästä ehtolauserimpsua ja selkeyden vuoksi haluaisi laittaa kyseisen rimpsun aliohjelmaan.

EDIT: Keksin jo miten pärjään vain kolmella ehtolauserimpsulla, mutta jääköön kysymykseksi mielenkiinnon vuoksi.

Sitten vastaan vielä tähän yhteen kysymykseen

novice kirjoitti:

Näin tuskin voi tehdä sillä eikös tuo 'exit function' keskeytä koko funktion palauttamatta kutsuvaan ohjelmaan mitään?

Exit function palauttaa aina kutsuvalle ohjelmalle jotain. Jos jossain kohti funktiota funktion paluuarvoksi on asetettu jotain, niin exit functionilla se arvo palautetaan kutsuvalle ohjelmalle. Jos mitään ei ole asetettu, niin sitten palautetaan oletusarvo (esim. Longin tapauksessa 0). Tietysti jos funktio palauttaa objektin, niin se voi palauttaa myös Nothing, mutta laskisin että sekin on "jotain".

Yleisesti ottaen Function palauttaa aina jotain ja Sub ei palauta koskaan mitään.

novice [10.01.2009 14:58:53]

#

Grez kirjoitti:

Mutta alkuperäisestä viestistäsi saa kyllä käsityksen, että haluaisit tehdä jotain, joka ei mielestäsi onnistuisi ilman ja kerroit vielä että olit kehittänyt siihen jonkin workaroundin.

Juu, funktioon oli tulossa neljää erilaista n.25 rivin mittaista ehtolauserimpsuja yli 40 kappaletta, joten funktion rivimääkin olisi tämän myötä kasvanut tarpeettomasti n.1000 riviä, tai vaihtoehtoisesti moduliin 4 aliohjelmaa. Joten tuli mieleen ajatus, että voisikohan nuo 4 aliohjelmaa rakentaa funktion sisään, pois näkyviltä.
Viimein kuitenkin huomasin raketaneeni funktion aivan väärin ja pärjäisinkin kolmella hieman muokatulla ehtolauserimpsulla.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta