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