合约结构:
// SPDX-License-Identifier: GPL-3.0 //或者 UNLICENSED表示非开源,无法审核
pragma solidity >=0.4.0 <0.9.0; //solidity版本设置
import "name1.sol"; //引入remix含有的合约
import "../name2.sol"; //通过路径引入合约
import{name as name_1} from "../name2.sol"; //name_1为自定义别名
//单行注释
/*
多行注释
*/
contract contract_name{
function function_name() function_modifier {//方法名 修饰符
...//内容
}
}
Modifier方法
modifier:代替重复的判断
用法:modifier modifier_name(){
...//内容
require( A , “operation failed” );//require方法可用于判断 如果A成立则继续执行否则弹//出“operation failed”
require(A1 , “”);
_;//使用require方法添加
}
例:function function_name(type parameter 1) public modifier_name{
C;//当A成立时执行C否则弹出“operation failed”
}
Event:事件是合约的可继承成员。发出一个事件,它存储在事务日志中传递的参数。这些日志存储在区块链上,并且可以使用合约地址访问,直到合约出现在区块链上。生成的事件无法从合同中访问,即使是创建和发出它们的人也无法访问。可以使用 event 关键字声明事件。
event Deposit(address _from, string _name, uint256 _value);//将值写入logs日志中
function deposit(string memory _name) public payable{
emit Deposit(msg.sender , _name , msg.value);
}
Enum:枚举将变量限制为只有几个预定义值之一。此枚举列表中的值称为枚举。
contract test {
enum FreshJuiceSize{ SMALL, MEDIUM, LARGE }
FreshJuiceSize choice;
FreshJuiceSize constant defaultChoice = FreshJuiceSize.MEDIUM;
function setLarge() public {
choice = FreshJuiceSize.LARGE;
}
function getChoice() public view returns (FreshJuiceSize) {
return choice;
}
function getDefaultChoice() public pure returns (uint) {
return uint(defaultChoice);
}
}
输出://输出的值为012顺序输出
uint8: 2
uint256: 1
Error自定义:
//error Unauthorized(string error);单个参数
error Unauthorized(string error,address _address);
contract ErrorExample {
address payable owner = payable(msg.sender);
function withraw() public{
if(msg.sender != owner)
//revert Unauthorized("Unauthorized"); //单个参数
revert Unauthorized({error:"Unauthorized",_address:msg.sender});
//条件满足if的内容,就会输出error:"Unauthorized",_address:msg.sender
owner.transfer(address(this).balance);
}
}
标签:function,error,name,Unauthorized,solidity,address,方法,public,结构 From: https://www.cnblogs.com/xingzheakai/p/17048221.html