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
|
||||
|
||||
.. _contract_structure:
|
||||
|
||||
***********************
|
||||
Structure of a Contract
|
||||
***********************
|
||||
|
||||
Contracts in Solidity are similar to classes in object-oriented languages.
|
||||
Each contract can contain declarations of **state variables**, **functions**,
|
||||
**function modifiers**, **events**, **structs types** and **enum types**.
|
||||
Each contract can contain declarations of :ref:`state_variables`, :ref:`functions`,
|
||||
:ref:`function_modifiers`, :ref:`events`, :ref:`structs_types` and :ref:`enum_types`.
|
||||
Furthermore, contracts can inherit from other contracts.
|
||||
|
||||
* State variables are values which are permanently stored in contract storage.
|
||||
* 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.
|
||||
* 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:
|
||||
|
||||
State Variables
|
||||
===============
|
||||
|
||||
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