<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <HTML> <HEAD> <TITLE>Programming in XPCE/Prolog: Section 7.4</TITLE><LINK REL=home HREF="index.html"> <LINK REL=contents HREF="Contents.html"> <LINK REL=index HREF="DocIndex.html"> <LINK REL=summary HREF="summary.html"> <LINK REL=previous HREF="sec-7.3.html"> <LINK REL=next HREF="sec-7.5.html"> <STYLE type="text/css"> /* Style sheet for SWI-Prolog latex2html */ dd.defbody { margin-bottom: 1em; } dt.pubdef { background-color: #c5e1ff; } pre.code { margin-left: 1.5em; margin-right: 1.5em; border: 1px dotted; padding-top: 5px; padding-left: 5px; padding-bottom: 5px; background-color: #f8f8f8; } div.navigate { text-align: center; background-color: #f0f0f0; border: 1px dotted; padding: 5px; } div.title { text-align: center; padding-bottom: 1em; font-size: 200%; font-weight: bold; } div.author { text-align: center; font-style: italic; } div.abstract { margin-top: 2em; background-color: #f0f0f0; border: 1px dotted; padding: 5px; margin-left: 10%; margin-right:10%; } div.abstract-title { text-align: center; padding: 5px; font-size: 120%; font-weight: bold; } div.toc-h1 { font-size: 200%; font-weight: bold; } div.toc-h2 { font-size: 120%; font-weight: bold; margin-left: 2em; } div.toc-h3 { font-size: 100%; font-weight: bold; margin-left: 4em; } div.toc-h4 { font-size: 100%; margin-left: 6em; } span.sec-nr { } span.sec-title { } span.pred-ext { font-weight: bold; } /* Footnotes */ sup.fn { color: blue; text-decoration: underline; } span.fn-text: { display: none; } sup.fn span {display: none;} sup:hover span { display: block !important; position: absolute; top: auto; left: auto; width: 80%; color: #000; background: white; border: 2px solid; padding: 5px; margin: 10px; z-index: 100; font-size: smaller; } </STYLE> </HEAD> <BODY BGCOLOR="white"> <DIV class="navigate"><A class="nav" href="index.html"><IMG SRC="home.gif" BORDER=0 ALT="Home"></A> <A class="nav" href="Contents.html"><IMG SRC="index.gif" BORDER=0 ALT="Contents"></A> <A class="nav" href="DocIndex.html"><IMG SRC="yellow_pages.gif" BORDER=0 ALT="Index"></A> <A class="nav" href="summary.html"><IMG SRC="info.gif" BORDER=0 ALT="Summary"></A> <A class="nav" href="sec-7.3.html"><IMG SRC="prev.gif" BORDER=0 ALT="Previous"></A> <A class="nav" href="sec-7.5.html"><IMG SRC="next.gif" BORDER=0 ALT="Next"></A> </DIV> <H2><A NAME="sec:7.4"><SPAN class="sec-nr">7.4</SPAN> <SPAN class="sec-title">Handling default arguments</SPAN></A></H2> <A NAME="sec:udcpreds"></A> <P>The predicate <A NAME="idx:default3:237"></A><A class="pred" href="udcpreds.html#default/3">default/3</A> provides a comfortable way to specify the meaning of default arguments. Future versions may incorporate the default value in the <A class="" href="summary.html#class:type">type</A> object itself. <DL> <DT class="pubdef"><A NAME="default/3"><STRONG>default</STRONG>(<VAR>+Argument, +Default, -Value</VAR>)</A></DT> <DD class="defbody"> Used to specify and compute defaults for arguments. <EM>Argument</EM> is the actual argument passed to the method implementation, <EM>Default</EM> is any valid <font size=-1>XPCE</font> object description (reference, integer, real, atom or compound ground term describing an object, see <A NAME="idx:send212:238"></A><A class="pred" href="sec-7.1.html#send/[2-12]">send/[2-12]</A>). <EM>Default</EM> can also be the term <PRE class="code"> resource(<Object>, <Name>) </PRE> <P>In which case the <B><CODE><-</CODE>resource_value</B>: <<VAR>Name</VAR>> from <<VAR>Object</VAR>> will be used as default value. <EM>Value</EM> is unified with <EM>Argument</EM> if <EM>Argument</EM> is not <A NAME="idx:default:239"></A><B>@default</B> and with <EM>Default</EM> otherwise. <P>The following is an example that sets the volume to a specified value or the value of the resource `volume' if <A NAME="idx:default:240"></A><B>@default</B> is passed as an argument. <PRE class="code"> resource(volume, 0..130, 75, "Volume in decibels"). volume(X, Vol:[0..130]) :-> default(Vol, resource(X, volume), V), <set the volume here>. </PRE> <P></DD> </DL> <P></BODY></HTML>