Page 1 of 1

Tyyppi toisen tyypin kenttänä

Posted: Thu Aug 28, 2008 7:24 pm
by SPuntte
En tiedä, onko tämän jo joku keksinyt, mutta laitetaan ainakin kaikkien näkyville. Siis idea on, että Tyypin kenttämuuttujan voi määritellä customTyyppi -tyyppiseksi muutujaksi. Yksinkertainen pätkä koodia esimerkiksi:

Code: Select all

Type DATABLOCK
    Field content As Integer
EndType

Type TESTTYPE
    Field db.DATABLOCK
EndType

//ForceVariableDeclaration vatii nämä
Dim test.TESTTYPE, tmp.DATABLOCK

//Luodaan TESTTYPE-instanssi ja sen sisälle DATABLOCK-instanssi
test = New(TESTTYPE)
test\db = New(DATABLOCK)

//Tyypin sisäiseen instanssiin ei kuitenkaan voida viitata suoraan test\db\content,
//joten tarvitaan väliaikainen tyyppimuuttuja tmp
tmp = test\db
tmp\content = 1337

//Osoitetaan, että homma toimii
PrintData(ConvertToInteger(test))
WaitKey

Function PrintData(ID%)
    Dim _type.TESTTYPE, inside_type.DATABLOCK
    _type = ConvertToType(ID%)
    inside_type = _type\db
    Print inside_type\content
EndFunction
Kuten näkyy, tyyppiviittauksissa ei voi käyttää kahta tai useampaa kauttaviivaa, joten välimuuttujia tarvitaan, mutta systeemistä on silti tiettyjä hyötyjä. Voi esimerkiksi luoda tyypin, joka kantaa sisällään toista instanssia itsestään pelkän osoittimen sijasta. Tällöin säästyt kirjoittamasta kasaa ConvertToInteger()- ja ConvertToType()-funktiokutsuja.

Re: Tyyppi toisen tyypin kenttänä

Posted: Thu Aug 28, 2008 7:29 pm
by Valtzu
No jotain samantyylistä joskus väkersin.. http://finhost8.futuron.fi/~coolbasi/ol ... c=7739&hl=

Re: Tyyppi toisen tyypin kenttänä

Posted: Fri Aug 29, 2008 6:04 pm
by MaGetzUb
Eli onko nämä niitä "tietotyyppejä"?

Re: Tyyppi toisen tyypin kenttänä

Posted: Fri Aug 29, 2008 9:13 pm
by regalis
programmer of DSG wrote:Eli onko nämä niitä "tietotyyppejä"?
Ei, tietotyyppejä on esim. kokonaisluvut, tavut, desimaaliluvut ja merkkijonot.

Tuo on kyllä todella kätevää, kun pitää vaikka tehdä RPG-pelin NPC:ille inventoryt tai muuta vastaavaa. Minäkin kyhäsin joskus samantapaisen systeemin johonkin projektiini, mutta se oli paljon pidempi ja purkkaisampi... :)

Re: Tyyppi toisen tyypin kenttänä

Posted: Sun Aug 31, 2008 3:44 pm
by MaGetzUb
regalis wrote:
programmer of DSG wrote:Eli onko nämä niitä "tietotyyppejä"?
Ei, tietotyyppejä on esim. kokonaisluvut, tavut, desimaaliluvut ja merkkijonot.

Tuo on kyllä todella kätevää, kun pitää vaikka tehdä RPG-pelin NPC:ille inventoryt tai muuta vastaavaa. Minäkin kyhäsin joskus samantapaisen systeemin johonkin projektiini, mutta se oli paljon pidempi ja purkkaisampi... :)
Oho, tullut pieni väärinkäsitys. :) No mutta kätevä tämä on silti. :D Esim pelisää vihollisella voi olla vain pelkkä reppu tyyppimuuttuja... Jos tajusin oikein
EDIT:

Mutta tuo reppu homma voi olla kovan homman takana. :roll: