<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Le nid de dodo &#187; label</title>
	<atom:link href="https://blog.developpez.com/dodo/ptag/label/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/dodo</link>
	<description></description>
	<lastBuildDate>Sat, 19 Oct 2024 00:29:26 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Le numéro de l&#8217;enum</title>
		<link>https://blog.developpez.com/dodo/p12021/intro/le-numero-de-lenum</link>
		<comments>https://blog.developpez.com/dodo/p12021/intro/le-numero-de-lenum#comments</comments>
		<pubDate>Wed, 05 Jun 2013 19:32:24 +0000</pubDate>
		<dc:creator><![CDATA[bredelet]]></dc:creator>
				<category><![CDATA[Dodo]]></category>
		<category><![CDATA[Intro]]></category>
		<category><![CDATA[ensemble]]></category>
		<category><![CDATA[enum]]></category>
		<category><![CDATA[enumeration]]></category>
		<category><![CDATA[identifiant]]></category>
		<category><![CDATA[label]]></category>
		<category><![CDATA[syntaxe]]></category>
		<category><![CDATA[table]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/dodo/?p=85</guid>
		<description><![CDATA[En langage C, la déclaration d&#8217;un enum énumère une liste d&#8217;identifiants associés avec cet enum (d&#8217;où son nom) et affecte une valeur numérique unique pour chacun d&#8217;entre eux. En Java, l&#8217;idée est la même mais les identifiants appartiennent au namespace de l&#8217;Enum et les valeurs peuvent être non-numériques. Exemple d&#8217;enum en C: &#40;C&#41; enum style &#123; plan, relief, creux, cadre &#125;; Le type enum de dodo est différent. En fait, il correspond au type des [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>En langage C, la déclaration d&rsquo;un enum énumère une liste d&rsquo;identifiants associés avec cet enum (d&rsquo;où son nom) et affecte une valeur numérique unique pour chacun d&rsquo;entre eux. En Java, l&rsquo;idée est la même mais les identifiants appartiennent au namespace de l&rsquo;Enum et les valeurs peuvent être non-numériques.</p>
<p>Exemple d&rsquo;enum en C:</p>
<div class="codecolorer-container c default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&#40;</span>C<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">enum</span> style <span style="color: #009900;">&#123;</span> plan<span style="color: #339933;">,</span> relief<span style="color: #339933;">,</span> creux<span style="color: #339933;">,</span> cadre <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></div></div>
<p>Le type enum de dodo est différent. En fait, il correspond au type des identifiants tels que &laquo;&nbsp;plan&nbsp;&raquo;; la différence est qu&rsquo;il n&rsquo;y a pas de liste d&rsquo;identifiants définie. Donc dodo permet de faire:</p>
<div class="codecolorer-container c default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">enum</span> jour <span style="color: #339933;">=</span> creux &nbsp;<span style="color: #339933;"># euh, c'est un jour de la semaine ça?</span></div></div>
<p>Heureusement il y a moyen de définir quels enums peuvent être affectés à une variable.</p>
<p>Cela se fait à l&rsquo;aide d&rsquo;une variable d&rsquo;ensemble ou de table associative. Par exemple:</p>
<div class="codecolorer-container c default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">enum</span><span style="color: #009900;">&#91;</span><span style="color: #339933;">:</span><span style="color: #009900;">&#93;</span> style <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #339933;">:</span>plan<span style="color: #339933;">,</span> <span style="color: #339933;">:</span>relief<span style="color: #339933;">,</span> <span style="color: #339933;">:</span>creux<span style="color: #339933;">,</span> <span style="color: #339933;">:</span>cadre<span style="color: #009900;">&#93;</span></div></div>
<p>Dans cet exemple, style est un ensemble qui a quatre éléments. Un élément de cet ensemble est de type style.member, qui de par la déclaration est un enum&#8230; Mais dodo s&rsquo;assure que l&rsquo;élément est bien listé dans l&rsquo;ensemble!</p>
<p>On peut donc déclarer une variable comme un enum appartenant à l&rsquo;ensemble &laquo;&nbsp;style&nbsp;&raquo;:</p>
<div class="codecolorer-container c default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">style.<span style="color: #202020;">member</span> s <span style="color: #339933;">=</span> creux &nbsp;<span style="color: #339933;"># ok, creux est un enum appartenant à l'ensemble</span></div></div>
<p>C&rsquo;est un concept puissant qui peut s&rsquo;appliquer à d&rsquo;autres types qu&rsquo;enum, par exemple si l&rsquo;on veut limiter la valeur d&rsquo;une chaîne de caractères à un ensemble de chaînes bien défini.</p>
<p>Pour associer une valeur numérique à chaque identifiant, il faut utiliser une table associative plutôt qu&rsquo;un ensemble:</p>
<div class="codecolorer-container c default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333;">int</span><span style="color: #009900;">&#91;</span><span style="color: #000000; font-weight: bold;">enum</span> label<span style="color: #009900;">&#93;</span> jours <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>lundi<span style="color: #339933;">:</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">,</span> mardi<span style="color: #339933;">:</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> mercredi<span style="color: #339933;">:</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">,</span> jeudi<span style="color: #339933;">:</span> <span style="color: #0000dd;">4</span><span style="color: #339933;">,</span> vendredi<span style="color: #339933;">:</span> <span style="color: #0000dd;">5</span><span style="color: #009900;">&#93;</span><br />
jours.<span style="color: #202020;">label</span> jour <span style="color: #339933;">=</span> mardi &nbsp;<span style="color: #339933;"># ok, mardi est associé avec l'entier 2 dans la table</span></div></div>
<p>Un enum qui appartient à deux ensembles peut être utilisé pour les deux. Mais un type d&rsquo;enum n&rsquo;est compatible que si l&rsquo;ensemble est inclus dans l&rsquo;autre. On pourrait faire:</p>
<div class="codecolorer-container c default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">enum</span><span style="color: #009900;">&#91;</span><span style="color: #339933;">:</span><span style="color: #009900;">&#93;</span> semaine <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #339933;">:</span>lundi<span style="color: #339933;">,</span> <span style="color: #339933;">:</span>mardi<span style="color: #339933;">,</span> <span style="color: #339933;">:</span>mercredi<span style="color: #339933;">,</span> <span style="color: #339933;">:</span>jeudi<span style="color: #339933;">,</span> <span style="color: #339933;">:</span>vendredi<span style="color: #339933;">,</span> <span style="color: #339933;">:</span>samedi<span style="color: #339933;">,</span> <span style="color: #339933;">:</span>dimanche<span style="color: #009900;">&#93;</span><br />
semaine.<span style="color: #202020;">member</span> m <span style="color: #339933;">=</span> jour.<span style="color: #202020;">value</span> &nbsp;<span style="color: #339933;"># ok, l'ensemble de jours.label est inclus dans semaine</span></div></div>
<p>Dodo associe une valeur interne à chaque enum qu&rsquo;il rencontre pour pouvoir comparer les enums entre eux. Mais deux programmes dodo n&rsquo;utilisent pas la même valeur interne pour le même enum. Par exemple, &laquo;&nbsp;plan&nbsp;&raquo; dans un programme peut être associé avec la même valeur que &laquo;&nbsp;creux&nbsp;&raquo; dans l&rsquo;autre. Cela pose problème si ces programmes veulent échanger des données.</p>
<p>Pour pallier à cela, dodo demande que les enums échangés fassent toujours partie d&rsquo;un ensemble (on peut utiliser style.member mais pas directement enum), et les deux programmes s&rsquo;échangent la position d&rsquo;un élément dans l&rsquo;ensemble plutôt que sa valeur interne. De cette façon &laquo;&nbsp;plan&nbsp;&raquo; reste &laquo;&nbsp;plan&nbsp;&raquo; et ne se transfome pas en &laquo;&nbsp;creux&nbsp;&raquo; quand il est envoyé par message.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
