solidity语法

函数的定义

function name (params) visibility/modifer return(params){

function body

}

函数状态修饰符(function state mutability state)

pure:函数既不能读取也不能修改合约的状态变量,完全独立于合约。

适用场景

  • 仅用于执行数学计算
  • 生成或返回固定的结果,与状态无关。

view:函数可以读取状态变量,但不能修改(常使用在getter函数

适用场景

  • 需要查询合约中的状态。
  • 实现只读逻辑,例如余额查询。

Payable:表示函数可以接收ETH(注意只有接受转账的函数需要,转账到外部的函数不需要)

适用场景

  • 用户向合约转账。
  • 实现拍卖、众筹等逻辑。

visibility

public、private、internal、external

solidity语法的使用习惯

在函数名前面加_(下划线)通常代表:

1、内部函数(internal function)

只能在合约内部调用,不能被外部合约和用户直接调用

2、私有变量(private variable)

solidity没有真正的私有变量,但开发者用_作为命名惯例,表示该变量不应被外部直接访问

3、防止命名冲突

如果有一个mint()函数,又需要调用OpenZepelin提供的_mint(),可以使用_区分他们

Gas消耗和存储类型的关系

Basic data type

bool – boolean 布尔类型 只有true和false两种

enum <name> { <member names> … } 枚举类型,用定义的数字代替常量

• Eg:

enum direction { left, right, up, down } 此时direction.left=0

pragma solidity ^0.8.0;
contract Example {
    enum Direction { Left, Right, Up, Down } // 定义枚举
    Direction public currentDirection = Direction.Left; // 初始化为 Left
    function setDirection(Direction _direction) public {
        currentDirection = _direction;
    }
}

• int, uint, int8, uint8, int16, uint16 … uint256 (uint表示unsigned int 无符号整数)

• int = int256, uint = uint256

• int8 => 1 byte signed integer

address – holds a 20 byte address 存储以太坊上的地址

Bytes1 .. Bytes32 – fixed size byte array 存储固定长度的字节数据 每个字节占8位

String 存储动态长度的文本数据

complex data type

bytes – dynamic array of bytes

pragma solidity ^0.8.0;

contract BytesExample {
    bytes public dynamicBytes; // 定义一个动态字节数组

    // 添加字节到数组
    function addByte(byte _byte) public {
        dynamicBytes.push(_byte); // 添加单个字节
    }

    // 获取数组长度
    function getBytesLength() public view returns (uint) {
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值