mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #4402 from ethereum/docsConstructor
Update docs to new constructor syntax
This commit is contained in:
commit
f5e1cf7753
@ -437,10 +437,10 @@ For example,
|
||||
|
||||
::
|
||||
|
||||
pragma solidity ^0.4.0;
|
||||
pragma solidity >0.4.24;
|
||||
|
||||
contract Test {
|
||||
function Test() public { b = 0x12345678901234567890123456789012; }
|
||||
constructor() public { b = 0x12345678901234567890123456789012; }
|
||||
event Event(uint indexed a, bytes32 b);
|
||||
event Event2(uint indexed a, bytes32 b);
|
||||
function foo(uint a) public { emit Event(a, b); }
|
||||
@ -582,4 +582,4 @@ Note that constants will be packed using the minimum number of bytes required to
|
||||
This means that, for example, ``abi.encodePacked(0) == abi.encodePacked(uint8(0)) == hex"00"`` and
|
||||
``abi.encodePacked(0x12345678) == abi.encodePacked(uint32(0x12345678)) == hex"12345678"``.
|
||||
|
||||
If padding is needed, explicit type conversions can be used: ``abi.encodePacked(uint16(0x12)) == hex"0012"``.
|
||||
If padding is needed, explicit type conversions can be used: ``abi.encodePacked(uint16(0x12)) == hex"0012"``.
|
||||
|
@ -28,7 +28,7 @@ become the new richest.
|
||||
|
||||
::
|
||||
|
||||
pragma solidity ^0.4.11;
|
||||
pragma solidity >0.4.24;
|
||||
|
||||
contract WithdrawalContract {
|
||||
address public richest;
|
||||
@ -36,7 +36,7 @@ become the new richest.
|
||||
|
||||
mapping (address => uint) pendingWithdrawals;
|
||||
|
||||
function WithdrawalContract() public payable {
|
||||
constructor() public payable {
|
||||
richest = msg.sender;
|
||||
mostSent = msg.value;
|
||||
}
|
||||
@ -65,13 +65,13 @@ This is as opposed to the more intuitive sending pattern:
|
||||
|
||||
::
|
||||
|
||||
pragma solidity ^0.4.11;
|
||||
pragma solidity >0.4.24;
|
||||
|
||||
contract SendContract {
|
||||
address public richest;
|
||||
uint public mostSent;
|
||||
|
||||
function SendContract() public payable {
|
||||
constructor() public payable {
|
||||
richest = msg.sender;
|
||||
mostSent = msg.value;
|
||||
}
|
||||
|
@ -301,10 +301,10 @@ inheritable properties of contracts and may be overridden by derived contracts.
|
||||
|
||||
::
|
||||
|
||||
pragma solidity ^0.4.22;
|
||||
pragma solidity >0.4.24;
|
||||
|
||||
contract owned {
|
||||
function owned() public { owner = msg.sender; }
|
||||
constructor() public { owner = msg.sender; }
|
||||
address owner;
|
||||
|
||||
// This contract only defines a modifier but does not use
|
||||
@ -346,7 +346,7 @@ inheritable properties of contracts and may be overridden by derived contracts.
|
||||
mapping (address => bool) registeredAddresses;
|
||||
uint price;
|
||||
|
||||
function Register(uint initialPrice) public { price = initialPrice; }
|
||||
constructor(uint initialPrice) public { price = initialPrice; }
|
||||
|
||||
// It is important to also provide the
|
||||
// `payable` keyword here, otherwise the function will
|
||||
@ -990,7 +990,7 @@ default constructor: ``contructor() public {}``.
|
||||
|
||||
::
|
||||
|
||||
pragma solidity ^0.4.22;
|
||||
pragma solidity >0.4.24;
|
||||
|
||||
contract A {
|
||||
uint public a;
|
||||
@ -1006,24 +1006,8 @@ default constructor: ``contructor() public {}``.
|
||||
|
||||
A constructor set as ``internal`` causes the contract to be marked as :ref:`abstract <abstract-contract>`.
|
||||
|
||||
.. note ::
|
||||
Prior to version 0.4.22, constructors were defined as functions with the same name as the contract. This syntax is now deprecated.
|
||||
|
||||
::
|
||||
|
||||
pragma solidity ^0.4.11;
|
||||
|
||||
contract A {
|
||||
uint public a;
|
||||
|
||||
function A(uint _a) internal {
|
||||
a = _a;
|
||||
}
|
||||
}
|
||||
|
||||
contract B is A(1) {
|
||||
function B() public {}
|
||||
}
|
||||
.. warning ::
|
||||
Prior to version 0.4.22, constructors were defined as functions with the same name as the contract. This syntax was deprecated and is not allowed anymore in version 0.5.0.
|
||||
|
||||
|
||||
.. index:: ! base;constructor
|
||||
@ -1402,7 +1386,7 @@ Using For
|
||||
*********
|
||||
|
||||
The directive ``using A for B;`` can be used to attach library
|
||||
functions (from the library ``A``) to any type (``B``).
|
||||
functions (from the library ``A``) to any type (``B``).
|
||||
These functions will receive the object they are called on
|
||||
as their first parameter (like the ``self`` variable in Python).
|
||||
|
||||
|
@ -225,11 +225,11 @@ creation-dependencies are not possible.
|
||||
|
||||
::
|
||||
|
||||
pragma solidity ^0.4.0;
|
||||
pragma solidity >0.4.24;
|
||||
|
||||
contract D {
|
||||
uint x;
|
||||
function D(uint a) public payable {
|
||||
constructor(uint a) public payable {
|
||||
x = a;
|
||||
}
|
||||
}
|
||||
|
@ -426,10 +426,10 @@ In the case of a ``contract A`` calling a new instance of ``contract B``, parent
|
||||
You will need to make sure that you have both contracts aware of each other's presence and that ``contract B`` has a ``payable`` constructor.
|
||||
In this example::
|
||||
|
||||
pragma solidity ^0.4.0;
|
||||
pragma solidity >0.4.24;
|
||||
|
||||
contract B {
|
||||
function B() public payable {}
|
||||
constructor() public payable {}
|
||||
}
|
||||
|
||||
contract A {
|
||||
|
@ -80,7 +80,7 @@ registering with username and password — all you need is an Ethereum keypair.
|
||||
|
||||
::
|
||||
|
||||
pragma solidity ^0.4.21;
|
||||
pragma solidity >0.4.24;
|
||||
|
||||
contract Coin {
|
||||
// The keyword "public" makes those variables
|
||||
@ -94,7 +94,7 @@ registering with username and password — all you need is an Ethereum keypair.
|
||||
|
||||
// This is the constructor whose code is
|
||||
// run only when the contract is created.
|
||||
function Coin() public {
|
||||
constructor() public {
|
||||
minter = msg.sender;
|
||||
}
|
||||
|
||||
|
@ -180,13 +180,13 @@ Never use tx.origin for authorization. Let's say you have a wallet contract like
|
||||
|
||||
::
|
||||
|
||||
pragma solidity ^0.4.11;
|
||||
pragma solidity >0.4.24;
|
||||
|
||||
// THIS CONTRACT CONTAINS A BUG - DO NOT USE
|
||||
contract TxUserWallet {
|
||||
address owner;
|
||||
|
||||
function TxUserWallet() public {
|
||||
constructor() public {
|
||||
owner = msg.sender;
|
||||
}
|
||||
|
||||
@ -200,7 +200,7 @@ Now someone tricks you into sending ether to the address of this attack wallet:
|
||||
|
||||
::
|
||||
|
||||
pragma solidity ^0.4.11;
|
||||
pragma solidity >0.4.24;
|
||||
|
||||
interface TxUserWallet {
|
||||
function transferTo(address dest, uint amount) public;
|
||||
@ -209,7 +209,7 @@ Now someone tricks you into sending ether to the address of this attack wallet:
|
||||
contract TxAttackWallet {
|
||||
address owner;
|
||||
|
||||
function TxAttackWallet() public {
|
||||
constructor() public {
|
||||
owner = msg.sender;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user