diff options
author | Eric Wolf <ericwolf42@gmail.com> | 2018-01-27T14·10+0100 |
---|---|---|
committer | Eric Wolf <ericwolf42@gmail.com> | 2018-01-27T15·18+0100 |
commit | 0167eac571d6d92f18640d05cfb7fa10a4cd0fd9 (patch) | |
tree | acdb7365ba041714b75a629298d2c1463befff36 /doc/manual/expressions | |
parent | e09161d05cfbd7c6d4cf41a35765e3fe346ea181 (diff) |
Improve manual on inheriting attributes
Expands first paragraph a bit Adds a more comprehensive example
Diffstat (limited to 'doc/manual/expressions')
-rw-r--r-- | doc/manual/expressions/language-constructs.xml | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/doc/manual/expressions/language-constructs.xml b/doc/manual/expressions/language-constructs.xml index 2f0027d479cd..47d95f8a13e3 100644 --- a/doc/manual/expressions/language-constructs.xml +++ b/doc/manual/expressions/language-constructs.xml @@ -61,7 +61,7 @@ evaluates to <literal>"foobar"</literal>. <simplesect><title>Inheriting attributes</title> -<para>When defining a set it is often convenient to copy variables +<para>When defining a set or in a let-expression it is often convenient to copy variables from the surrounding lexical scope (e.g., when you want to propagate attributes). This can be shortened using the <literal>inherit</literal> keyword. For instance, @@ -72,7 +72,15 @@ let x = 123; in y = 456; }</programlisting> -evaluates to <literal>{ x = 123; y = 456; }</literal>. (Note that +is equivalent to + +<programlisting> +let x = 123; in +{ x = x; + y = 456; +}</programlisting> + +and both evaluate to <literal>{ x = 123; y = 456; }</literal>. (Note that this works because <varname>x</varname> is added to the lexical scope by the <literal>let</literal> construct.) It is also possible to inherit attributes from another set. For instance, in this fragment @@ -101,6 +109,26 @@ variables from the surrounding scope (<varname>fetchurl</varname> <varname>libXaw</varname> (the X Athena Widgets) from the <varname>xlibs</varname> (X11 client-side libraries) set.</para> +<para> +Summarizing the fragment + +<programlisting> +... +inherit x y z; +inherit (src-set) a b c; +...</programlisting> + +is equivalent to + +<programlisting> +... +x = x; y = y; z = z; +a = src-set.a; b = src-set.b; c = src-set.c; +...</programlisting> + +when used while defining local variables in a let-expression or +while defining a set.</para> + </simplesect> |