Tyyppi toisen tyypin kenttänä
Posted: Thu Aug 28, 2008 7:24 pm
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:
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.
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