From c70ebfd241cc3dc6d19847d94b11784da1c79cdd Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Tue, 11 Jul 2017 18:10:42 +0100 Subject: Document function selectors --- docs/abi-spec.rst | 2 ++ docs/types.rst | 11 +++++++++++ 2 files changed, 13 insertions(+) (limited to 'docs') diff --git a/docs/abi-spec.rst b/docs/abi-spec.rst index fc1a3adb..3ce7f50c 100644 --- a/docs/abi-spec.rst +++ b/docs/abi-spec.rst @@ -17,6 +17,8 @@ We assume the interface functions of a contract are strongly typed, known at com This specification does not address contracts whose interface is dynamic or otherwise known only at run-time. Should these cases become important they can be adequately handled as facilities built within the Ethereum ecosystem. +.. _abi_function_selector: + Function Selector ================= diff --git a/docs/types.rst b/docs/types.rst index 3335655a..5c291f35 100644 --- a/docs/types.rst +++ b/docs/types.rst @@ -400,6 +400,17 @@ Note that public functions of the current contract can be used both as an internal and as an external function. To use ``f`` as an internal function, just use ``f``, if you want to use its external form, use ``this.f``. +Additionally, public (or external) functions also have a special member called ``selector``, +which returns the :ref:`ABI function selector `:: + + pragma solidity ^0.4.0; + + contract Selector { + function f() returns (bytes4) { + return this.f.selector; + } + } + Example that shows how to use internal function types:: pragma solidity ^0.4.5; -- cgit