[vala/staging] manual: Update from wiki.gnome.org
- From: Rico Tzschichholz <ricotz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/staging] manual: Update from wiki.gnome.org
- Date: Thu, 15 Sep 2022 18:47:22 +0000 (UTC)
commit 67ad727a0b5d9909ed4e80fc93691eee969d0200
Author: Rico Tzschichholz <ricotz ubuntu com>
Date: Thu Sep 15 20:46:05 2022 +0200
manual: Update from wiki.gnome.org
doc/manual/manual.xml | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
---
diff --git a/doc/manual/manual.xml b/doc/manual/manual.xml
index 939824aa8..102e8681b 100644
--- a/doc/manual/manual.xml
+++ b/doc/manual/manual.xml
@@ -1128,7 +1128,7 @@
<section>
<title>Delegates</title>
<para>A delegate declaration defines a method type: a type that can be invoked, accepting a set of values of
certain types, and returning a value of a set type. In Vala, methods are not first-class objects, and as such
cannot be created dynamically; however, any method can be considered to be an instance of a delegate's type,
provided that the method signature matches that of the delegate. </para>
-<para>Methods are considered to be an immutable reference type. Any method can be referred to by name as an
expression returning a reference to that method - this can be assigned to a field (or variable, or
parameter), or else invoked directly as a standard method invocation (see <ulink
url="http://wiki.gnome.org/Projects/Vala/Manual/Export/Projects/Vala/Manual/Expressions#Invocation_expressions">Expressions/Invocation
expressions</ulink>). </para>
+<para>Methods are considered to have an immutable reference type. Any method can be referred to by name as
an expression returning a reference to that method - this can be assigned to a field (or variable, or
parameter), or else invoked directly as a standard method invocation (see <ulink
url="http://wiki.gnome.org/Projects/Vala/Manual/Export/Projects/Vala/Manual/Expressions#Invocation_expressions">Expressions/Invocation
expressions</ulink>). </para>
<section>
<title>Types of delegate</title>
@@ -1141,17 +1141,13 @@
<title>Delegate declaration</title>
<para>The syntax for declaring a delegate changes slightly based on what sort of delegate is being declared.
This section shows the form for a namespace delegate. Many of the parts of the declaration are common to
all types, so sections from here are referenced from class delegates, interface delegates, etc.
</para><itemizedlist><listitem override="none">
<para>delegate-declaration:</para><itemizedlist><listitem override="none">
-<para>instance-delegate-declaration</para>
-<para> static-delegate-declaration</para></listitem></itemizedlist>
-<para> instance-delegate-declaration:</para><itemizedlist><listitem override="none">
<para>[ access-modifier ] <emphasis role="strong">delegate</emphasis> return-type qualified-delegate-name
<emphasis role="strong">(</emphasis> method-params-list <emphasis role="strong">)</emphasis> [ <emphasis
role="strong">throws</emphasis> error-list ] <emphasis
role="strong">;</emphasis></para></listitem></itemizedlist>
-<para> static-delegate-declaration:</para><itemizedlist><listitem override="none">
-<para>[ access-modifier ] <emphasis role="strong">static</emphasis> <emphasis
role="strong">delegate</emphasis> return-type qualified-delegate-name <emphasis role="strong">(</emphasis>
method-params-list <emphasis role="strong">)</emphasis> [ <emphasis role="strong">throws</emphasis>
error-list ] <emphasis role="strong">;</emphasis></para></listitem></itemizedlist>
<para> qualified-delegate-name:</para><itemizedlist><listitem override="none">
<para>[ qualified-namespace-name <emphasis role="strong">.</emphasis> ]
delegate-name</para></listitem></itemizedlist>
<para> delegate-name:</para><itemizedlist><listitem override="none">
<para>identifier</para></listitem></itemizedlist></listitem></itemizedlist>
<para>Parts of this syntax are based on the respective sections of the method declaration syntax (see <ulink
url="http://wiki.gnome.org/Projects/Vala/Manual/Export/Projects/Vala/Manual/Methods#">Methods</ulink> for
details). </para>
+<para>By default, delegates are instance delegates. To declare a static delegate, add the annotation
<code>[CCode (has_target = false)]</code>; see the examples below. (Static delegates used to be declared by
adding the keyword <code>static</code> before <code>delegate</code> instead of using the annotation. This
syntax is still accepted by the compiler, but will cause a warning to be given.) </para>
</section>
<section>
@@ -1163,13 +1159,15 @@
<section>
<title>Examples</title>
<para>Defining delegates: </para><programlisting format="linespecific" language="vala"
linenumbering="numbered" startinglinenumber="1"><lineannotation><![CDATA[// Static delegate taking two ints,
returning void:]]></lineannotation>
-<lineannotation/><token><![CDATA[static]]></token><![CDATA[ ]]><token><![CDATA[void]]></token><![CDATA[
]]><methodname><![CDATA[DelegateName]]></methodname><![CDATA[ (]]><token><![CDATA[int]]></token><![CDATA[
]]><methodname><![CDATA[a]]></methodname><![CDATA[, ]]><token><![CDATA[int]]></token><![CDATA[
]]><methodname><![CDATA[b]]></methodname><![CDATA[);]]>
+<lineannotation/><![CDATA[[]]><methodname><![CDATA[CCode]]></methodname><![CDATA[
(]]><methodname><![CDATA[has_target]]></methodname><![CDATA[ =
]]><token><![CDATA[false]]></token><![CDATA[)]]]>
+<token><![CDATA[void]]></token><![CDATA[ ]]><methodname><![CDATA[DelegateName]]></methodname><![CDATA[
(]]><token><![CDATA[int]]></token><![CDATA[ ]]><methodname><![CDATA[a]]></methodname><![CDATA[,
]]><token><![CDATA[int]]></token><![CDATA[ ]]><methodname><![CDATA[b]]></methodname><![CDATA[);]]>
<lineannotation><![CDATA[// Instance delegate with the same signature:]]></lineannotation>
<lineannotation/><token><![CDATA[void]]></token><![CDATA[
]]><methodname><![CDATA[DelegateName]]></methodname><![CDATA[ (]]><token><![CDATA[int]]></token><![CDATA[
]]><methodname><![CDATA[a]]></methodname><![CDATA[, ]]><token><![CDATA[int]]></token><![CDATA[
]]><methodname><![CDATA[b]]></methodname><![CDATA[);]]>
<lineannotation><![CDATA[// Static delegate which may throw an error:]]></lineannotation>
-<lineannotation/><token><![CDATA[static]]></token><![CDATA[ ]]><token><![CDATA[void]]></token><![CDATA[
]]><methodname><![CDATA[DelegateName]]></methodname><![CDATA[ ()
]]><token><![CDATA[throws]]></token><![CDATA[
]]><methodname><![CDATA[GLib]]></methodname><![CDATA[.]]><methodname><![CDATA[Error]]></methodname><![CDATA[;]]>
+<lineannotation/><![CDATA[[]]><methodname><![CDATA[CCode]]></methodname><![CDATA[
(]]><methodname><![CDATA[has_target]]></methodname><![CDATA[ =
]]><token><![CDATA[false]]></token><![CDATA[)]]]>
+<token><![CDATA[void]]></token><![CDATA[ ]]><methodname><![CDATA[DelegateName]]></methodname><![CDATA[ ()
]]><token><![CDATA[throws]]></token><![CDATA[
]]><methodname><![CDATA[GLib]]></methodname><![CDATA[.]]><methodname><![CDATA[Error]]></methodname><![CDATA[;]]>
</programlisting>
<para>Invoking delegates, and passing as parameters. </para><programlisting format="linespecific"
language="vala" linenumbering="numbered" startinglinenumber="1"><token><![CDATA[void]]></token><![CDATA[
]]><methodname><![CDATA[f1]]></methodname><![CDATA[(]]><token><![CDATA[int]]></token><![CDATA[
]]><methodname><![CDATA[a]]></methodname><![CDATA[) {
]]><methodname><![CDATA[stdout]]></methodname><![CDATA[.]]><methodname><![CDATA[printf]]></methodname><![CDATA[(]]><phrase><![CDATA["]]></phrase><phrase><![CDATA[%d]]></phrase><![CDATA[
]]><phrase><![CDATA["]]></phrase><![CDATA[, ]]><methodname><![CDATA[a]]></methodname><![CDATA[); }]]>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]