当前位置: 首页 > wzjs >正文

宁夏网站建设多少钱手机百度推广怎么打广告

宁夏网站建设多少钱,手机百度推广怎么打广告,企业信息化平台建设方案,青海网站建设与维护本节是《Solidity by Example》的中文翻译与深入讲解,专为零基础或刚接触区块链开发的小白朋友打造。我们将通过“示例 解说 提示”的方式,带你逐步理解每一段 Solidity 代码的实际用途与背后的逻辑。Solidity 是以太坊等智能合约平台使用的主要编程语…

本节是《Solidity by Example》的中文翻译与深入讲解,专为零基础或刚接触区块链开发的小白朋友打造。我们将通过“示例 + 解说 + 提示”的方式,带你逐步理解每一段 Solidity 代码的实际用途与背后的逻辑。

Solidity 是以太坊等智能合约平台使用的主要编程语言,就像写网页要用 HTML 和 JavaScript,写智能合约就需要会 Solidity。

如果你从没写过区块链代码也没关系,只要你了解一点点编程概念,比如“变量”“函数”“条件判断”,我们就能从最简单的例子开始,一步步建立你的 Solidity 编程思维。

Immutable

不可变变量就像常量。不可变变量的值可以在构造函数中设置,但之后不能修改。

// SPDX-License-Identifier: MIT
// 声明代码采用 MIT 开源许可证,这是一种常见的开源许可协议,允许自由使用、修改和分发代码。pragma solidity ^0.8.26;
// 指定 Solidity 编译器版本必须大于或等于 0.8.26 并且小于 0.9.0。
// `pragma` 指令确保合约使用兼容的编译器版本,`^0.8.26` 表示支持 0.8.26 或更高版本(但不超过 0.9.0)。contract Immutable {// 定义一个名为 `Immutable` 的智能合约。// 合约是一个运行在以太坊区块链上的程序,包含数据(状态变量)和逻辑(函数)。// 这个合约的目的是展示 Solidity 中的不可变变量(immutable variables)。address public immutable myAddr;// 声明一个名为 `myAddr` 的不可变状态变量,类型为 `address`(以太坊地址,20 字节)。// `immutable` 关键字表示这个变量的值在合约部署时(通过构造函数)设置后不可修改。// `public` 关键字表示该变量可以被外部访问,Solidity 会自动为其生成一个 getter 函数(类似于 `function myAddr() public view returns (address)`)。// 未在声明时初始化,值将在构造函数中设置。uint256 public immutable myUint;// 声明一个名为 `myUint` 的不可变状态变量,类型为 `uint256`(256 位无符号整数,范围从 0 到 2^256-1)。// `immutable` 关键字表示这个变量的值在部署时设置后不可修改。// `public` 允许外部访问,并生成 getter 函数。// 未在声明时初始化,值将在构造函数中设置。constructor(uint256 _myUint) {// 定义一个构造函数(constructor),在合约部署时执行一次。// 构造函数接受一个参数 `_myUint`,类型为 `uint256`,用于初始化 `myUint`。// 构造函数是设置不可变变量值的唯一地方。myAddr = msg.sender;// 将 `myAddr` 设置为 `msg.sender`(全局变量,表示部署合约的账户地址)。// `msg.sender` 是调用构造函数的地址(通常是部署者的以太坊账户)。// 一旦设置,`myAddr` 不可再次修改。myUint = _myUint;// 将 `myUint` 设置为构造函数传入的参数 `_myUint`。// `_myUint` 是部署者提供的数值,设置后 `myUint` 不可再次修改。}
}

Immutable 是一个简单的智能合约,展示了 Solidity 中的不可变变量(immutable variables)。不可变变量类似于常量(constant),但更灵活,因为它们的值可以在构造函数中动态设置,而常量必须在编译时硬编码。

代码做什么?

  • 定义不可变变量:
    • myAddr 是一个不可变的以太坊地址,记录谁部署了这个合约(通过 msg.sender)。
    • myUint 是一个不可变的数字,由部署者在构造函数中指定。
  • 构造函数设置值:
    • 在合约部署时,构造函数运行一次,设置 myAddrmyUint 的值。
    • myAddr 被设置为部署者的地址(msg.sender)。
    • myUint 被设置为构造函数参数 _myUint 的值。
  • 不可修改:设置后,myAddrmyUint 的值永久固定,无法再次更改。
  • 公开访问:因为是 public,外部可以通过 getter 函数读取这些变量的值(例如 myAddr()myUint())。
  • 节省 Gas:不可变变量比普通状态变量更节省 Gas,因为它们的值在部署后不会改变,编译器可以优化存储和访问。

关键点:

  • 不可变变量的特点:
    • 使用 immutable 关键字定义。
    • 值在构造函数中设置,之后不可修改。
    • 比普通状态变量更节省 Gas,因为编译器知道它们不会改变,可以优化存储。
  • 与常量的区别:
    • 常量(constant:值在编译时硬编码(写死),不能在运行时动态设置。
    • 不可变变量(immutable:值可以在构造函数中动态设置(例如基于 msg.sender 或输入参数)。
    • 例如,myAddr 可以记录部署者的地址,而常量无法做到这一点。
  • Gas 优化:
    • 不可变变量的值在部署后固定,存储成本低于普通状态变量。
    • 访问不可变变量(通过 getter 函数)是 view 操作,链下调用免费。
  • 命名规范:
    • 不可变变量没有强制的大写命名规范,但通常使用驼峰命名法(如 myAddrmyUint)。
  • 状态变量:
    • myAddrmyUint 是状态变量,存储在区块链的 storage 中。
    • public 提供了 getter 函数,方便外部读取。
  • 用途:
    • 不可变变量常用于存储部署时确定的值,例如:
      • 部署者的地址(管理员地址)。
      • 合约的初始化参数(最大限制、代币精度等)。
      • 其他需要在部署时动态设置但之后不更改的值。

不可变变量的注意事项

  • 不可修改:尝试修改不可变变量(如 myAddr = newAddress;)会导致编译错误。
  • 仅在构造函数中设置:不可变变量的值只能在构造函数中初始化,不能在其他函数中设置。
  • 支持的类型:不可变变量支持值类型(如 uint256addressbytes32),但不支持复杂类型(如动态数组 uint[] 或映射 mapping)。
  • Gas 优化:不可变变量适合存储部署时确定的值,相比普通状态变量更节省 Gas。
  • 与常量的对比:
    • constant:值在编译时固定,适合硬编码的配置(如固定地址)。
    • immutable:值在部署时动态设置,适合依赖运行时数据的场景(如 msg.sender)。
http://www.dtcms.com/wzjs/180152.html

相关文章:

  • 学校网站建设项目管理报告手机域名访问网站怎么进入
  • 做准的算命网站怎么做百度推广的代理
  • 国外被动收入网站做的好的建一个外贸独立站大约多少钱
  • wordpress 媒体库 群晖武汉官网优化公司
  • 成都的汽车网站建设杭州网站建设
  • 专业的网站服务公司whois查询
  • 阳江营销型网站建设德阳seo
  • 做网站项目时 需求分析的内容制定营销推广方案
  • 大型网站制作seo技巧是什么
  • 湖南建设部网站百度推广账号登录入口
  • 郑州网站建设咨询百度学术官网
  • 进入网站前如何做环境检测免费seo网站
  • wordpress的系统构成图李勇seo博客
  • 武汉设计网站的公司qq群引流推广网站
  • 网站建设与优化推广的话术关键词优化排名第一
  • 乐清微网站建设织梦seo排名优化教程
  • pythone网站开发久久seo综合查询
  • 网站做排名提高网站搜索排名
  • 北京建网站的价格怎样看网页的友情链接
  • 汕头网站搭建百度数字人内部运营心法曝光
  • 网站开发中什么是站点英文网站seo
  • 网站上做旅游卖家要学什么个人引流推广怎么做
  • 做代购网站如何缴税seo排名软件免费
  • 电子商务网站页面设计图片关键词排名工具有哪些
  • 巴中网站建设国内最开放的浏览器
  • wordpress 3.9.2 漏洞网站搜索优化技巧
  • 怎么开发游戏网站优化设计的基础是网站基本要素及每个细节的优化
  • 盐城外贸网站建设杭州seo排名优化
  • 盐城做企业网站哪家好海南百度推广中心
  • 购物网站app百度引擎搜索