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

动漫网站建设方案设计色盲眼镜

动漫网站建设方案设计,色盲眼镜,外贸公司网络推广,网站建设常见故障文章目录 引用类型数组切片结构体 引用类型 数组切片 数组切片是对数组中连续部分的一个视图。它的语法为 x[start:end],其中 start 和 end 是表达式,结果类型为 uint256(或者可以隐式转换为 uint256)。切片的第一个元素是 x[st…

文章目录

  • 引用类型
    • 数组切片
    • 结构体

在这里插入图片描述

引用类型

数组切片

数组切片是对数组中连续部分的一个视图。它的语法为 x[start:end],其中 startend 是表达式,结果类型为 uint256(或者可以隐式转换为 uint256)。切片的第一个元素是 x[start],最后一个元素是 x[end - 1]

如果 start 大于 end,或者 end 大于数组的长度,则会抛出异常。

startend 都是可选的:start 默认为 0,end 默认为数组的长度。

数组切片没有成员。它们可以隐式地转换为其底层类型的数组,并支持索引访问。索引访问相对于切片的起始位置,而不是底层数组的绝对位置。

数组切片没有类型名称,这意味着没有变量可以将数组切片作为类型,它们仅存在于中间表达式中。

注意
目前,数组切片仅在 calldata 类型的数组上可用。数组切片在 ABI 解码函数参数中的辅助数据时非常有用:

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.8.5 <0.9.0;contract Proxy {/// @dev 代理管理的客户端合约地址address client;constructor(address client_) {client = client_;}/// 在对地址参数进行基本验证后,转发调用到客户端实现的 "setOwner(address)"。function forward(bytes calldata payload) external {bytes4 sig = bytes4(payload[:4]);// 由于截断行为,bytes4(payload) 的效果是一样的。// bytes4 sig = bytes4(payload);if (sig == bytes4(keccak256("setOwner(address)"))) {address owner = abi.decode(payload[4:], (address));require(owner != address(0), "Address of owner cannot be zero.");}(bool status,) = client.delegatecall(payload);require(status, "Forwarded call failed.");}
}

结构体

Solidity 提供了一种定义新类型的方式,即结构体(struct),如下例所示:

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.6.0 <0.9.0;// 定义一个具有两个字段的新类型。
// 在合约外部声明结构体允许它被多个合约共享。
// 这里其实不需要这样做。
struct Funder {address addr;uint amount;
}contract CrowdFunding {// 结构体也可以在合约内部定义,这样它只在合约内部以及派生合约中可见。struct Campaign {address payable beneficiary;uint fundingGoal;uint numFunders;uint amount;mapping(uint => Funder) funders;}uint numCampaigns;mapping(uint => Campaign) campaigns;function newCampaign(address payable beneficiary, uint goal) public returns (uint campaignID) {campaignID = numCampaigns++; // campaignID 是返回的变量// 我们不能使用 "campaigns[campaignID] = Campaign(beneficiary, goal, 0, 0)"// 因为右侧会创建一个内存结构体 "Campaign",其中包含一个映射。Campaign storage c = campaigns[campaignID];c.beneficiary = beneficiary;c.fundingGoal = goal;}function contribute(uint campaignID) public payable {Campaign storage c = campaigns[campaignID];// 创建一个新的临时内存结构体,并用给定的值初始化,// 然后将其复制到存储中。// 注意,你也可以使用 Funder(msg.sender, msg.value) 来初始化。c.funders[c.numFunders++] = Funder({addr: msg.sender, amount: msg.value});c.amount += msg.value;}function checkGoalReached(uint campaignID) public returns (bool reached) {Campaign storage c = campaigns[campaignID];if (c.amount < c.fundingGoal)return false;uint amount = c.amount;c.amount = 0;c.beneficiary.transfer(amount);return true;}
}

该合约并没有提供一个完整的众筹合约功能,但它包含了理解结构体所需的基本概念。结构体类型可以在映射和数组中使用,结构体本身也可以包含映射和数组。

需要注意的是,结构体不能包含其自身类型的成员,尽管结构体可以作为映射成员的值类型,或者可以包含其类型的动态大小数组。这一限制是必要的,因为结构体的大小必须是有限的。

在所有函数中,结构体类型都被分配给了一个数据位置为 storage 的局部变量。这并不会复制结构体,而只是存储一个引用,以便对局部变量成员的赋值实际上会写入状态。

当然,你也可以直接访问结构体的成员,而不必将其分配给局部变量,就像 campaigns[campaignID].amount = 0 这样。

注意
在 Solidity 0.7.0 及之前的版本,允许内存结构体包含存储类型的成员(如映射),并且像上例中的 campaigns[campaignID] = Campaign(beneficiary, goal, 0, 0) 这样的赋值会正常执行,但会默默跳过这些成员。


文章转载自:

http://3oFPvsNr.nyqnk.cn
http://gjF3cNOS.nyqnk.cn
http://mjf1YdA3.nyqnk.cn
http://dIbOWKJp.nyqnk.cn
http://Xs9IjZCC.nyqnk.cn
http://Z1MTuWxb.nyqnk.cn
http://wrLl5XHD.nyqnk.cn
http://yrbRU5NB.nyqnk.cn
http://c1o0dXXB.nyqnk.cn
http://tqwvtba0.nyqnk.cn
http://ySrqEQRb.nyqnk.cn
http://oC9SpyoB.nyqnk.cn
http://EjhY5Mld.nyqnk.cn
http://yZtlYw89.nyqnk.cn
http://CKFJV6Wc.nyqnk.cn
http://pveQPv8R.nyqnk.cn
http://iGStJ9Q2.nyqnk.cn
http://jClHcfEQ.nyqnk.cn
http://6cwQCWCp.nyqnk.cn
http://4bp4td8D.nyqnk.cn
http://vE5b1VQM.nyqnk.cn
http://Zn3tckWc.nyqnk.cn
http://5RNfK7Ei.nyqnk.cn
http://Vb5xj7dK.nyqnk.cn
http://qi4A2K5c.nyqnk.cn
http://6SpXvcd8.nyqnk.cn
http://ElHTNvDK.nyqnk.cn
http://1lMykAhO.nyqnk.cn
http://2o5EbSIL.nyqnk.cn
http://inzYtnUE.nyqnk.cn
http://www.dtcms.com/wzjs/616661.html

相关文章:

  • copyright技术支持 东莞网站建设关键词搜索排名
  • 绿色系的网站好看的wordpress图片主题
  • 建设网站需要哪些经营范围lnmp wordpress建设多网站
  • 国外有没有网站是做潘多拉的wordpress产品页面模板
  • 800元建网站wordpress文章页版权
  • 工商网站官网入口制作一个网页需要哪几个步骤
  • 找人做网站没有做好报案有用吗自学织梦做网站要多久
  • 全国广告公司网站建设艺术网站定制
  • tomcat做网站网站后台密码是什么
  • 嘉鱼网站建设多少钱家具设计软件
  • 站长工具是做什么的穷游网站 做行程 封面
  • 建设学院网站意义那个网站可以做logo
  • iis默认网站打不开wordpress直达链接404
  • 手机好看的网站网站开发棋牌
  • 网站开发的思维导图免费ppt下载软件
  • 青岛网站设计建立公司自己免费怎么制作网站
  • 网站平台建设的实训报告lynda wordpress
  • 黄陂区建设招标网站自己设计装修房子软件
  • 帮人做网站赚钱免费制作封面的网站
  • 太原网站优化价格做网站的收益在哪
  • 云南网站建设的步骤国外网站无法访问
  • 网站开发注意wordpress积分商城
  • 做网页游戏网站需要什么做网页和做网站的区别
  • 莱芜做网站的商家有哪些开发软件属于什么行业
  • 网站建设项目报告网上做网站怎么赚钱吗
  • 自己做的网站怎么挂广告电商网站开发平台浏览器
  • 浅谈博物馆网站建设意义动态域名网站
  • 宿迁网站建设联系电话wordpress最简单主题
  • 手机网站被做跳转优秀的软文广告案例
  • 网站制作中搜索栏怎么做网站空间如何使用