solidity结构以及部分方法
合约结构:
// 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);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现