mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Updates docs to new constructor syntax.
This commit is contained in:
parent
da60fdab37
commit
e16e37f507
@ -437,10 +437,10 @@ For example,
|
|||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
pragma solidity ^0.4.0;
|
pragma solidity ^0.4.24;
|
||||||
|
|
||||||
contract Test {
|
contract Test {
|
||||||
function Test() public { b = 0x12345678901234567890123456789012; }
|
constructor() public { b = 0x12345678901234567890123456789012; }
|
||||||
event Event(uint indexed a, bytes32 b);
|
event Event(uint indexed a, bytes32 b);
|
||||||
event Event2(uint indexed a, bytes32 b);
|
event Event2(uint indexed a, bytes32 b);
|
||||||
function foo(uint a) public { emit Event(a, b); }
|
function foo(uint a) public { emit Event(a, b); }
|
||||||
|
@ -28,7 +28,7 @@ become the new richest.
|
|||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
pragma solidity ^0.4.11;
|
pragma solidity ^0.4.24;
|
||||||
|
|
||||||
contract WithdrawalContract {
|
contract WithdrawalContract {
|
||||||
address public richest;
|
address public richest;
|
||||||
@ -36,7 +36,7 @@ become the new richest.
|
|||||||
|
|
||||||
mapping (address => uint) pendingWithdrawals;
|
mapping (address => uint) pendingWithdrawals;
|
||||||
|
|
||||||
function WithdrawalContract() public payable {
|
constructor() public payable {
|
||||||
richest = msg.sender;
|
richest = msg.sender;
|
||||||
mostSent = msg.value;
|
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 {
|
contract SendContract {
|
||||||
address public richest;
|
address public richest;
|
||||||
uint public mostSent;
|
uint public mostSent;
|
||||||
|
|
||||||
function SendContract() public payable {
|
constructor() public payable {
|
||||||
richest = msg.sender;
|
richest = msg.sender;
|
||||||
mostSent = msg.value;
|
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 {
|
contract owned {
|
||||||
function owned() public { owner = msg.sender; }
|
constructor() public { owner = msg.sender; }
|
||||||
address owner;
|
address owner;
|
||||||
|
|
||||||
// This contract only defines a modifier but does not use
|
// 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;
|
mapping (address => bool) registeredAddresses;
|
||||||
uint price;
|
uint price;
|
||||||
|
|
||||||
function Register(uint initialPrice) public { price = initialPrice; }
|
constructor(uint initialPrice) public { price = initialPrice; }
|
||||||
|
|
||||||
// It is important to also provide the
|
// It is important to also provide the
|
||||||
// `payable` keyword here, otherwise the function will
|
// `payable` keyword here, otherwise the function will
|
||||||
@ -1006,24 +1006,8 @@ default constructor: ``contructor() public {}``.
|
|||||||
|
|
||||||
A constructor set as ``internal`` causes the contract to be marked as :ref:`abstract <abstract-contract>`.
|
A constructor set as ``internal`` causes the contract to be marked as :ref:`abstract <abstract-contract>`.
|
||||||
|
|
||||||
.. note ::
|
.. warning ::
|
||||||
Prior to version 0.4.22, constructors were defined as functions with the same name as the contract. This syntax is now deprecated.
|
Prior to version 0.4.22, constructors were defined as functions with the same name as the contract. This syntax was deprecated is not allowed anymore in version 0.5.0.
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
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 {}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.. index:: ! base;constructor
|
.. index:: ! base;constructor
|
||||||
|
@ -225,11 +225,11 @@ creation-dependencies are not possible.
|
|||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
pragma solidity ^0.4.0;
|
pragma solidity ^0.4.24;
|
||||||
|
|
||||||
contract D {
|
contract D {
|
||||||
uint x;
|
uint x;
|
||||||
function D(uint a) public payable {
|
constructor(uint a) public payable {
|
||||||
x = a;
|
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.
|
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::
|
In this example::
|
||||||
|
|
||||||
pragma solidity ^0.4.0;
|
pragma solidity ^0.4.24;
|
||||||
|
|
||||||
contract B {
|
contract B {
|
||||||
function B() public payable {}
|
constructor() public payable {}
|
||||||
}
|
}
|
||||||
|
|
||||||
contract A {
|
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 {
|
contract Coin {
|
||||||
// The keyword "public" makes those variables
|
// 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
|
// This is the constructor whose code is
|
||||||
// run only when the contract is created.
|
// run only when the contract is created.
|
||||||
function Coin() public {
|
constructor() public {
|
||||||
minter = msg.sender;
|
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
|
// THIS CONTRACT CONTAINS A BUG - DO NOT USE
|
||||||
contract TxUserWallet {
|
contract TxUserWallet {
|
||||||
address owner;
|
address owner;
|
||||||
|
|
||||||
function TxUserWallet() public {
|
constructor() public {
|
||||||
owner = msg.sender;
|
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 {
|
interface TxUserWallet {
|
||||||
function transferTo(address dest, uint amount) public;
|
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 {
|
contract TxAttackWallet {
|
||||||
address owner;
|
address owner;
|
||||||
|
|
||||||
function TxAttackWallet() public {
|
constructor() public {
|
||||||
owner = msg.sender;
|
owner = msg.sender;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user