zoals velen heb ik een vraagje
![Wink ;)](./images/smilies/icon_wink.gif)
In de tips vond ik volgende vraag:
2. Compatibiliteitsregels geven soms aanleiding tot “versoepeling” van de type-checking. Som
zo voledig mogelijk de in Oberon(-2) aanwezige compatibiliteitsregels op, en geef telkens aan
waarom de “versoepeling” nuttig of belangrijk is.
Nu die compatibiliteitsregels dat lukt wel, maar die versoepeling
![Wink ;)](./images/smilies/icon_wink.gif)
Geldt dat enkel bij de numerieke types? (dus dat de typeinclusie geldt?) of zijn er nog versoepelingen?
tot nu toe heb ik volgende (ruwe schets)
Code: Select all
Type Equivalentie
• Als als a en b in dezelfde lijst verschijnen van variabele/record veld of formele parameter declaratie en zijn geen open array’s
• Als 2 identifiers gedeclareerd worden als zijnde van hetzelfde type
• Als a1 := a2
Type Gelijkheid
• Als a en b van hetzelfde type zijn
• Als ta en tb open arrays zijn met gelijke typeelementen
• Als ta en tb procedures zijn wiens formele parameter lijsten overeenkomen
Type Inclusie
LongReal > REAL > LongINT > INT > ShortINT =>vorm van versoepeling
Toekennings compatibiliteit
Een uitdrukking a van type ta is compatible met b van type tb als
• Als ta en tb van hetzelfde type zijn
• Ta en tb numerieke types zijn en tb includes ta => versoepeling
• Ta en tb zijn records en ta is een extentie van tb
• Ta en tb zijn pointers en ta is een extentie van tb
• Ta en tb zijn procedures en ta is NIL
• Tb is een array n of char en ta is een stringconstante met m elementen en m<n
• Tb is een procedure type en ta is een procedure wiens formele parameters overeenkomen met die van tb
Array compatibiliteit
• Ta en tb zijn arrays van hetzelfde types => versoepeling als het ene groter is van omvang dan andere (numerieke types)
• Tb en ta zijn open arrays wiens elementen ook compatibel zijn => versoepeling
• Tb is een array of char en ta is een string
Uitdrukkingscompatibiliteit
Bij bewerkingen geldt type inclusie: kleinste gemeenschappelijke nujmerieke type => versoepeling
Algemeen: versoepeling laat vooral toe niet identieke numerieke types te vermengen zolang de type inclusie geldt