ObjectVision / GeoDMS

Source code for the GeoDMS software
https://www.geodms.nl/
Other
7 stars 1 forks source link

indien 0/0 in true deel van if statement is casting noodzakelijk #678

Closed basvanbemmel closed 5 months ago

basvanbemmel commented 6 months ago

Ik heb een meer algemene vraag dan echt een bug

Het gaat om het expression deel van een for_each_nedv statement.

De volgende code werkt

'Src_subsector_rel_org/' + Variant/name + '<>Classifications/Actor/Sector/XSubsector/V/Zon_Totaal && Src_subsector_rel_org/' + Variant/name + '<>Classifications/Actor/Sector/XSubsector/V/Wind_Totaal ? Src_subsector_rel_org/' + Variant/name + ' : 0/0',

Als ik enkel en alleen true en false om draai krijg ik een foutmelding

'Src_subsector_rel_org/' + Variant/name + '<>Classifications/Actor/Sector/XSubsector/V/Zon_Totaal && Src_subsector_rel_org/' + Variant/name + '<>Classifications/Actor/Sector/XSubsector/V/Wind_Totaal ? 0/0 : Src_subsector_rel_org/' + Variant/name,

Domain mismatch between the specified categorical ValuesUnit (/Classifications/Actor/Sector/XSubsector : UInt32) and the noncategorical calculation results ( : UInt32) (different CheckedKeyExpr)

ik moet het true deel casten om de omgedraaide situatie werkend te krijgen

'Src_subsector_rel_org/' + Variant/name + '<>Classifications/Actor/Sector/XSubsector/V/Zon_Totaal && Src_subsector_rel_org/' + Variant/name + '<>Classifications/Actor/Sector/XSubsector/V/Wind_Totaal ? (0/0)[Actor/Sector/XSubsector] : Src_subsector_rel_org/' + Variant/name, Vraag is eigenlijk waarom enkel bij het omdraaien van het true en false deel er wel ineens gecast dient te worden. Is het true en false deel anders geprogrammeerd dan? Ik had verwacht dat het gedrag gelijk zou zijn.

MaartenHilferink commented 6 months ago

De valuesUnit van de rekenregel

condition ? thenExpr : elseExpr

wordt nu bepaald door de values unit van de thenExpr. Er wordt nog wel eerst gecontroleerd of de values unit van de elseExpr compatible is met de values unit van de thenExpr, waarbij een default unit als compatible wordt verondersteld.

Dit is inderdaad niet symmetrische en ik begrijp dat je dat redelijkerwijs wel zou verwachten. Ik zal een wijziging overwegen waarbij condition ? 0/0 : categorischeExpr wel tot een resultaat met values unit van categorischeExpr zal leiden, maar dat dan eerst door de release-test laten gaan om compatibility impact te schatten. Target: v15.

MaartenHilferink commented 5 months ago

Dit geeft nu (vanaf 14.17.0) geen rode items meer:

image