<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><pre><font face="UICTFontTextStyleBody"><span style="white-space: normal; background-color: rgba(255, 255, 255, 0);"><i>    > > Does it mean that CASE statement for pointer/</i></span></font></pre><pre><font face="UICTFontTextStyleBody"><span style="white-space: normal; background-color: rgba(255, 255, 255, 0);"><i>    > > record </i></span></font><i style="white-space: normal; background-color: rgba(255, 255, 255, 0); font-family: UICTFontTextStyleBody;">types work like an IF statement?</i></pre><pre><i style="white-space: normal; background-color: rgba(255, 255, 255, 0); font-family: UICTFontTextStyleBody;"><br></i></pre><pre><i style="white-space: normal; background-color: rgba(255, 255, 255, 0); font-family: UICTFontTextStyleBody;">  </i><span style="white-space: normal; background-color: rgba(255, 255, 255, 0); font-family: UICTFontTextStyleBody;">></span><i style="white-space: normal; background-color: rgba(255, 255, 255, 0); font-family: UICTFontTextStyleBody;"> 
</i><span style="white-space: normal; background-color: rgba(255, 255, 255, 0); font-family: UICTFontTextStyleBody;">
Yes, it is a syntactic sugar for IF/ELSIF</span></pre><pre><span style="white-space: normal; background-color: rgba(255, 255, 255, 0); font-family: UICTFontTextStyleBody;">  > and type guard, nothing more.</span></pre><pre><br></pre><pre><font face="UICTFontTextStyleBody"><span style="white-space: normal;">A key difference to the IF statement</span></font></pre><pre><font face="UICTFontTextStyleBody"><span style="white-space: normal;"><br></span></font></pre><pre><font face="UICTFontTextStyleBody"><span style="white-space: normal;">  IF t IS T1 THEN S1</span></font></pre><pre><font face="UICTFontTextStyleBody"><span style="white-space: normal;">  ELSIF t IS T2 THEN S2</span></font></pre><pre><font face="UICTFontTextStyleBody"><span style="white-space: normal;">   ...</span></font></pre><pre><font face="UICTFontTextStyleBody"><span style="white-space: normal;">  END</span></font></pre><pre><font face="UICTFontTextStyleBody"><span style="white-space: normal;"><br></span></font></pre><pre><font face="UICTFontTextStyleBody"><span style="white-space: normal;">is that in the CASE statement</span></font></pre><pre><font face="UICTFontTextStyleBody"><span style="white-space: normal;"><br></span></font></pre><pre><font face="UICTFontTextStyleBody"><span style="white-space: normal;">   CASE t OF</span></font></pre><pre><font face="UICTFontTextStyleBody"><span style="white-space: normal;">      T1: S1 |</span></font></pre><pre><font face="UICTFontTextStyleBody"><span style="white-space: normal;">      T2: S2 | </span></font></pre><pre><font face="UICTFontTextStyleBody"><span style="white-space: normal;">       ...</span></font></pre><pre><font face="UICTFontTextStyleBody"><span style="white-space: normal;">    END</span></font></pre><pre><font face="UICTFontTextStyleBody"><span style="white-space: normal;"><br></span></font></pre><pre><font face="UICTFontTextStyleBody"><span style="white-space: normal;">the dynamic type t of the case expression is set to the type of the selected case, i.e. in the statements S1 labeled by T1, the case variable t is considered as of type T1, etc.</span></font></pre><pre><font face="UICTFontTextStyleBody"><span style="white-space: normal;"><br></span></font></pre><pre><font face="UICTFontTextStyleBody"><span style="white-space: normal;">This implies that no type guard t(T1) is needed in S1, etc, i.e. one can just write t instead.</span></font></pre></body></html>