mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Added examples, references to structure section
This commit is contained in:
parent
688313cc51
commit
2e52170d7a
@ -1,17 +1,112 @@
|
|||||||
.. index:: contract, state variable, function, event, struct, enum, function;modifier
|
.. index:: contract, state variable, function, event, struct, enum, function;modifier
|
||||||
|
|
||||||
|
.. _contract_structure:
|
||||||
|
|
||||||
***********************
|
***********************
|
||||||
Structure of a Contract
|
Structure of a Contract
|
||||||
***********************
|
***********************
|
||||||
|
|
||||||
Contracts in Solidity are similar to classes in object-oriented languages.
|
Contracts in Solidity are similar to classes in object-oriented languages.
|
||||||
Each contract can contain declarations of **state variables**, **functions**,
|
Each contract can contain declarations of :ref:`state_variables`, :ref:`functions`,
|
||||||
**function modifiers**, **events**, **structs types** and **enum types**.
|
:ref:`function_modifiers`, :ref:`events`, :ref:`structs_types` and :ref:`enum_types`.
|
||||||
Furthermore, contracts can inherit from other contracts.
|
Furthermore, contracts can inherit from other contracts.
|
||||||
|
|
||||||
* State variables are values which are permanently stored in contract storage.
|
.. _state_variables:
|
||||||
* Functions are the executable units of code within a contract.
|
|
||||||
* Function modifiers can be used to amend the semantics of functions in a declarative way.
|
State Variables
|
||||||
* Events are convenience interfaces with the EVM logging facilities.
|
===============
|
||||||
* Structs are custom defined types that can group several variables.
|
|
||||||
* Enums can be used to create custom types with a finite set of values.
|
State variables are values which are permanently stored in contract storage.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
contract SimpleStorage {
|
||||||
|
uint storedData; // State variable
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
.. _functions:
|
||||||
|
|
||||||
|
Functions
|
||||||
|
=========
|
||||||
|
|
||||||
|
Functions are the executable units of code within a contract.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
contract SimpleAuction {
|
||||||
|
function bid() { // Function
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.. _function_modifiers:
|
||||||
|
|
||||||
|
Function Modifiers
|
||||||
|
==================
|
||||||
|
|
||||||
|
Function modifiers can be used to amend the semantics of functions in a declarative way.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
contract Purchase {
|
||||||
|
address public seller;
|
||||||
|
|
||||||
|
modifier onlySeller() { // Modifier
|
||||||
|
if (msg.sender != seller) throw;
|
||||||
|
_
|
||||||
|
}
|
||||||
|
|
||||||
|
function abort() onlySeller { // Modifier usage
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.. _events:
|
||||||
|
|
||||||
|
Events
|
||||||
|
======
|
||||||
|
|
||||||
|
Events are convenience interfaces with the EVM logging facilities.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
contract SimpleAuction {
|
||||||
|
event HighestBidIncreased(address bidder, uint amount); // Event
|
||||||
|
|
||||||
|
function bid() {
|
||||||
|
// ...
|
||||||
|
HighestBidIncreased(msg.sender, msg.value); // Triggering event
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.. _structs_types:
|
||||||
|
|
||||||
|
Structs Types
|
||||||
|
=============
|
||||||
|
|
||||||
|
Structs are custom defined types that can group several variables.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
contract Ballot {
|
||||||
|
struct Voter { // Struct
|
||||||
|
uint weight;
|
||||||
|
bool voted;
|
||||||
|
address delegate;
|
||||||
|
uint vote;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.. _enum_types:
|
||||||
|
|
||||||
|
Enum Types
|
||||||
|
==========
|
||||||
|
|
||||||
|
Enums can be used to create custom types with a finite set of values.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
contract Purchase {
|
||||||
|
enum State { Created, Locked, Inactive } // Enum
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user