Vyper入门:9.常数


文档摘要

Vyper 入门: 9. 常数 在Vyper中, 和 是两种特殊的变量类型,它们用于定义不变的值,还可以节省gas。与solidity不同的是, 和 可以声明所有的变量类型 Constant 变量 变量是在编译时就确定的常量。它们不占用区块链存储空间。通常用于定义那些在合约代码中不会改变的值,如最大供应量、地址等 代码示例 Immutable 变量 变量是在合约部署时在构造函数中设定一次,之后不能更改的变量,通常适用于那些需要在部署时设置,但之后不会改变的值,如合约创建者地址 代码示例 常量无法被外部直接访问,通常需要编写指定的视图函数进行访问 代码示例 常量 总结 在本节中,我们介绍了 和 。如何正确选择需要根据需求来使用, 对于编译时已知且永远不会改变的值。

Vyper 入门: 9. 常数

在Vyper中,constantimmutable 是两种特殊的变量类型,它们用于定义不变的值,还可以节省gas。与solidity不同的是,constantimmutable可以声明所有的变量类型

1. Constant 变量

constant 变量是在编译时就确定的常量。它们不占用区块链存储空间。通常用于定义那些在合约代码中不会改变的值,如最大供应量、地址等

代码示例

MAX_SUPPLY: constant(uint256) = 10000 NAME: constant(String[5]) = "Vyper" PERMIT: constant(bytes32) = 0x0000000000000000000000000000000000000000000000000000000000000000

2. Immutable 变量

immutable 变量是在合约部署时在构造函数中设定一次,之后不能更改的变量,通常适用于那些需要在部署时设置,但之后不会改变的值,如合约创建者地址

代码示例

OWNER: immutable(address) @payable @external def __init__(): OWNER = msg.sender

常量无法被外部直接访问,通常需要编写指定的视图函数进行访问

代码示例

@view @external def get_max_supply() -> uint256: return MAX_SUPPLY @view @external def get_name() -> String[5]: return NAME @view @external def get_permit() -> bytes32: return PERMIT @view @external def get_owner() -> address: return OWNER

常量

总结

在本节中,我们介绍了 constantimmutable。如何正确选择需要根据需求来使用,constant 对于编译时已知且永远不会改变的值。immutable 对于需要在部署时确定,但后续不变的值。


作者与出处
原作者: WTFAcademy
来源:WTFAcademy
许可证:MIT
整理: 灏天文库整理
由灏天文库结构化整理,提供目录导航、全文检索与在线阅读,便于系统化学习
发布者: 作者: WTFAcademy 转发
评论区 (0)
U