Ympäristönä Visual Basic 6.
Mitenkähän onnistuisi tehdä funktio joka palauttaa taulukon paluuarvonaan? Tarkoitus olisi tehdä funktio joka tekee jotain ja palauttaa taulukon jonka kokoa ei tiedetä ennen funktion kutsua. Kuvitteellisen funktion toiminta voisi olla esimerkiksi:
-kutsutaan funktiota joka saa parametriksi merkkijonon
- funktio laskee kuinka monta "a" kirjainta merkkijonosta löytyy ja asettaa sen taulukon 0-alkioon
- lasketaan kuinka monta "b" kirjainta löytyy ja asetetaan se taulukon 1-alkioon
- jne jne kunnes merkkijonosta ei löydy enää uusia laskemattomia kirjaimia
- funktio palauttaa taulukon alkioineen paluuarvonaan
Eli funktiota kutsuttaisiin
Dim mjono As String mjono = "Tästä pitäisi laskea kirjaimet" maarat = LaskeKirjaimet(mjono) ' Nyt maarat(0) alkiossa olisi a-kirjaimien määrä ' ja maarat(1) alkiossa b-kirjaimien määrä jne.
VB:n helpeistä en mielestäni löytänyt sopivaa ohjetta tuollaiseen. Olisin kiitollinen, jos joku osaisi edes kertoa mistä löytyisi kunnollinen ohje funktion tekoon mikäli ei täältä löydy tarvittavaa tietotaitoa.
Seuraavasta osoitteesta näyttäisi löytyvän erilaisia tapoja asian toteuttamiseen. Kokeilin viestiketjun ensimmäistä ratkaisua, ja se ainakin toimi hyvin.
http://www.experts-exchange.com/Programming/Programming_Languages/
edit: Yksi tapa on siis määrittää funktion tyypiksi Variant, muodostaa sen sisällä taulukko ja palauttaa tämä taulukko.
Löysinkin Microsoftin MSDN:stä yhden esimerkin jossa palautettiin taulukko funktion paluuarvona. Sitä soveltamalla sainkin tehtyä itselleni PHP:stä tutun explode() funktion tyylisen funktion. Tuo explode():han palautti tietystä merkkijonosta merkkijonotaulukon, joka oli pilkottu tietyllä erotinmerkkinä.
Voisinkin oikeastaan laittaa funktion koodivinkkeihin jos joku muu kaipaa sellaista.
edit: Nyt funktio löytyy koodivinkeistäkin ylläpidon tarkistuksen jälkeen.
Itsekin ajattelin yrittää tehdä tuollaisen funktion joskus - kunnes huomasin, että sellainen on jo lisätty Visual Basiciin. :) Ilmeisesti versiossa 6.0. Split-niminen funktio tekee juuri saman kuin PHP:n explode, paitsi että parametrit annetaan eri järjestyksessä. Splitin vastafunktio taas on Join (PHP:ssa implode).
Mutta kyllä sinun funktiosi aivan hyvin koodivinkkeihin sopii, hyviä koodiesimerkkejä ei koskaan ole liikaa.
lainaus:
Itsekin ajattelin yrittää tehdä tuollaisen funktion joskus - kunnes huomasin, että sellainen on jo lisätty Visual Basiciin. :) Ilmeisesti versiossa 6.0. Split-niminen funktio tekee juuri saman kuin PHP:n explode, paitsi että parametrit annetaan eri järjestyksessä. Splitin vastafunktio taas on Join (PHP:ssa implode).
Ai niinpäs olikin :) Olisi pitänyt tutkia hieman tarkemmin helppejä... No tulipahan tuo taulukon palautus ainakin opeteltua :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.