From d9604d7d0b4cffa2f446d09ab0923d61b124a2af Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Thu, 27 Jun 2019 21:21:55 +0200 Subject: manual: document how accessors are resolved; fixes #11514 --- doc/manual.rst | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'doc') diff --git a/doc/manual.rst b/doc/manual.rst index ac66c2550..3b8346ef1 100644 --- a/doc/manual.rst +++ b/doc/manual.rst @@ -3298,6 +3298,25 @@ different; for this a special setter syntax is needed: new s s.host = 34 # same as `host=`(s, 34) +A proc defined as ``f=`` (with the trailing ``=``) is called +a `setter`:idx:. A setter can be called explicitly via the common +backticks notation: + +.. code-block:: nim + + proc `f=`(x: MyObject; value: string) = + discard + + `f=`(myObject, "value") + + +``f=`` can called implicitly in the pattern +``x.f = value`` if and only if the type of ``x`` does not have a field +named ``f`` or if ``f`` is not visible in the current module. These rules +ensure that object fields and accessors can have the same name. Within the +module ``x.f`` is then always interpreted as field access and outside the +module it is interpreted as an accessor proc call. + Command invocation syntax ------------------------- -- cgit 1.4.1-2-gfad0