Updates docs to new constructor syntax.

This commit is contained in:
bitshift 2018-03-02 16:44:35 +01:00 committed by Alex Beregszaszi
parent d664a599e6
commit 07c74ef924

View File

@ -40,7 +40,7 @@ This means that cyclic creation dependencies are impossible.
:: ::
pragma solidity ^0.4.16; pragma solidity ^0.4.20; // should actually be 0.4.21
contract OwnedToken { contract OwnedToken {
// TokenCreator is a contract type that is defined below. // TokenCreator is a contract type that is defined below.
@ -52,7 +52,7 @@ This means that cyclic creation dependencies are impossible.
// This is the constructor which registers the // This is the constructor which registers the
// creator and the assigned name. // creator and the assigned name.
function OwnedToken(bytes32 _name) public { constructor(bytes32 _name) public {
// State variables are accessed via their name // State variables are accessed via their name
// and not via e.g. this.owner. This also applies // and not via e.g. this.owner. This also applies
// to functions and especially in the constructors, // to functions and especially in the constructors,
@ -976,9 +976,30 @@ virtual method lookup.
Constructors Constructors
============ ============
A constructor is an optional function with the same name as the contract which is executed upon contract creation. A constructor is an optional function declared with the ``constructor`` keyword which is executed upon contract creation.
Constructor functions can be either ``public`` or ``internal``. Constructor functions can be either ``public`` or ``internal``.
::
pragma solidity ^0.4.20; // should actually be 0.4.21
contract A {
uint public a;
constructor(uint _a) internal {
a = _a;
}
}
contract B is A(1) {
constructor() public {}
}
A constructor set as ``internal`` causes the contract to be marked as :ref:`abstract <abstract-contract>`.
.. note ::
Prior to version 0.4.21, constructors were defined as functions with the same name as the contract. This syntax is now deprecated.
:: ::
pragma solidity ^0.4.11; pragma solidity ^0.4.11;
@ -995,7 +1016,6 @@ Constructor functions can be either ``public`` or ``internal``.
function B() public {} function B() public {}
} }
A constructor set as ``internal`` causes the contract to be marked as :ref:`abstract <abstract-contract>`.
.. index:: ! base;constructor .. index:: ! base;constructor
@ -1009,11 +1029,11 @@ the base constructors. This can be done in two ways::
contract Base { contract Base {
uint x; uint x;
function Base(uint _x) public { x = _x; } constructor(uint _x) public { x = _x; }
} }
contract Derived is Base(7) { contract Derived is Base(7) {
function Derived(uint _y) Base(_y * _y) public { constructor(uint _y) Base(_y * _y) public {
} }
} }