Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Next revisionBoth sides next revision | ||
reference:polymorphic [2018/09/08 22:26] – [Labels] gawrilow | user_guide:extend:polymorphic [2019/01/25 16:02] – ↷ Page moved from reference:polymorphic to user_guide:extend:polymorphic oroehrig | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Polymorphic Functions ====== | ====== Polymorphic Functions ====== | ||
- | In the rulefiles you can define polymorphic functions and methods resembling, to some extent, the features of programming languages C++ or Java. The general syntax is described [[rulefiles# | + | In the rulefiles you can define polymorphic functions and methods resembling, to some extent, the features of programming languages C++ or Java. The general syntax is described [[reference:rulefiles# |
===== Definition elements ===== | ===== Definition elements ===== | ||
Line 8: | Line 8: | ||
category label '':'' | category label '':'' | ||
- | // | + | // |
Name and signature are mandatory, while label, type parameters, and attributes are optional. | Name and signature are mandatory, while label, type parameters, and attributes are optional. | ||
Line 34: | Line 34: | ||
:: Denotes arbitrarily many (trailing) arguments of any types. | :: Denotes arbitrarily many (trailing) arguments of any types. | ||
? '' | ? '' | ||
- | :: Refers to an [[rulefiles# | + | :: Refers to an [[reference:rulefiles# |
.. A signature may contain more than one option list reference. | .. A signature may contain more than one option list reference. | ||
.. If the argument list already contains a reference to a hash map at the position where keyword-value pairs are expected, this reference is passed unchanged and unchecked to the function body; this allows to gradually define families of polymorphic functions delegating work to each other without expensive re-checking and reordering of keyword arguments. | .. If the argument list already contains a reference to a hash map at the position where keyword-value pairs are expected, this reference is passed unchanged and unchecked to the function body; this allows to gradually define families of polymorphic functions delegating work to each other without expensive re-checking and reordering of keyword arguments. | ||
Line 120: | Line 120: | ||
:: Tells that the function returns an object which can be modified by assigning a value to it. Primarily used with methods giving access to elements of some data container like a matrix or vector. | :: Tells that the function returns an object which can be modified by assigning a value to it. Primarily used with methods giving access to elements of some data container like a matrix or vector. | ||
? '' | ? '' | ||
- | :: Tells that the function returns an object of the given type. Usually the return value is automatically recognized by the auto-generated wrapper and hooked under an appropriately " | + | :: Tells that the function returns an object of the given type. Usually the return value is automatically recognized by the auto-generated wrapper and hooked under an appropriately " |
? '' | ? '' | ||
:: Tells that the function returns several values in a list context. | :: Tells that the function returns several values in a list context. |