Type detection: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (Regularize non-standard header markup) |
m (→{{header|Phix}}: added syntax colouring the hard way, phix/basics) |
||
Line 543: | Line 543: | ||
=={{header|Phix}}== |
=={{header|Phix}}== |
||
{{libheader|Phix/basics}} |
|||
Phix builtin type tests are: integer(), atom(), string(), sequence(), and object() |
Phix builtin type tests are: integer(), atom(), string(), sequence(), and object(). The latter returns true unless arg is unassigned, also notice that showtype never even attempts to set t to "object", since it is guaranteed to be one of the other four. |
||
<lang Phix>procedure showtype(object o) |
|||
<!--<lang Phix>--> |
|||
string t = iff(atom(o)?iff(integer(o)?"integer":"atom") |
|||
<span style="color: #008080;">procedure</span> <span style="color: #000000;">showtype</span><span style="color: #0000FF;">(</span><span style="color: #004080;">object</span> <span style="color: #000000;">o</span><span style="color: #0000FF;">)</span> |
|||
:iff(string(o)?"string":"sequence")) |
|||
<span style="color: #004080;">string</span> <span style="color: #000000;">t</span> <span style="color: #0000FF;">=</span> <span style="color: #008080;">iff</span><span style="color: #0000FF;">(</span><span style="color: #004080;">atom</span><span style="color: #0000FF;">(</span><span style="color: #000000;">o</span><span style="color: #0000FF;">)?</span><span style="color: #008080;">iff</span><span style="color: #0000FF;">(</span><span style="color: #004080;">integer</span><span style="color: #0000FF;">(</span><span style="color: #000000;">o</span><span style="color: #0000FF;">)?</span><span style="color: #008000;">"integer"</span><span style="color: #0000FF;">:</span><span style="color: #008000;">"atom"</span><span style="color: #0000FF;">)</span> |
|||
?{t,o} |
|||
<span style="color: #0000FF;">:</span><span style="color: #008080;">iff</span><span style="color: #0000FF;">(</span><span style="color: #004080;">string</span><span style="color: #0000FF;">(</span><span style="color: #000000;">o</span><span style="color: #0000FF;">)?</span><span style="color: #008000;">"string"</span><span style="color: #0000FF;">:</span><span style="color: #008000;">"sequence"</span><span style="color: #0000FF;">))</span> |
|||
end procedure |
|||
<span style="color: #0000FF;">?{</span><span style="color: #000000;">t</span><span style="color: #0000FF;">,</span><span style="color: #000000;">o</span><span style="color: #0000FF;">}</span> |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span> |
|||
showtype(5) |
|||
showtype(7.5) |
|||
<span style="color: #000000;">showtype</span><span style="color: #0000FF;">(</span><span style="color: #000000;">5</span><span style="color: #0000FF;">)</span> |
|||
showtype("string") |
|||
<span style="color: #000000;">showtype</span><span style="color: #0000FF;">(</span><span style="color: #000000;">7.5</span><span style="color: #0000FF;">)</span> |
|||
showtype({5,7.5,"string"})</lang> |
|||
<span style="color: #000000;">showtype</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"string"</span><span style="color: #0000FF;">)</span> |
|||
<span style="color: #000000;">showtype</span><span style="color: #0000FF;">({</span><span style="color: #000000;">5</span><span style="color: #0000FF;">,</span><span style="color: #000000;">7.5</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"string"</span><span style="color: #0000FF;">})</span> |
|||
<!--</lang>--> |
|||
{{out}} |
{{out}} |
||
<pre> |
<pre> |