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

澳门特别行政区网站建设_网站建设公司_电商网站_seo优化

制作网站流程图,企业网站建设情况 文库,网页设计策划案例,中山 网站设计1. 函数类型#xff1a;内部(internal)函数和外部(external)函数函数类型是一种表示函数的类型。可以将一个函数赋值给另一个函数类型的变量#xff0c;也可以将一个函数作为参数进行传递#xff0c;还能在函数调用中返回函数类型变量。 函数类型有两类#xff1a;- 内部(i…1. 函数类型内部(internal)函数和外部(external)函数函数类型是一种表示函数的类型。可以将一个函数赋值给另一个函数类型的变量也可以将一个函数作为参数进行传递还能在函数调用中返回函数类型变量。 函数类型有两类- 内部(internal)函数和 外部(external) 函数内部函数只能在当前合约内被调用(更具体来说在当前代码块内包括内部库函数和继承的函数中)因为它们不能在当前合约上下文的外部被执行。 调用一个内部函数是通过跳转到它的入口标签来实现的就像在当前合约的内部调用一个函数。外部函数由一个地址和一个函数签名组成可以通过外部函数调用传递或者返回。函数类型表示成如下的形式function () {internal|external} [pure|constant|view|payable] [returns ()]与参数类型相反返回类型不能为空 —— 如果函数类型不需要返回则需要删除整个 returns () 部分。函数类型默认是内部函数因此不需要声明 internal 关键字。 与此相反的是合约中的函数本身默认是 public 的只有当它被当做类型名称时默认才是内部函数。有两种方法可以访问当前合约中的函数一种是直接使用它的名字f 另一种是使用 this.f 。 前者适用于内部函数后者适用于外部函数。如果当函数类型的变量还没有初始化时就调用它的话会引发一个异常。 如果在一个函数被 delete之后调用它也会发生相同的情况。如果外部函数类型在 Solidity 的上下文环境以外的地方使用它们会被视为 function 类型。 该类型将函数地址紧跟其函数标识一起编码为一个 bytes24 类型。。请注意当前合约的 public 函数既可以被当作内部函数也可以被当作外部函数使用。 如果想将一个函数当作内部函数使用就用 f 调用如果想将其当作外部函数使用 this.f 。除此之外public(或 external)函数也有一个特殊的成员变量称作 selector可以返回 ABI 函数选择器:pragma solidity ^0.4.16;contract Selector {function f() public view returns (bytes4) {return this.f.selector;}}如果使用内部函数类型的例子:pragma solidity ^0.4.16;library ArrayUtils {// 内部函数可以在内部库函数中使用// 因为它们会成为同一代码上下文的一部分function map(uint[] memory self, function (uint) pure returns (uint) f)internalpurereturns (uint[] memory r){r new uint[](self.length);for (uint i 0; i self.length; i) {r[i] f(self[i]);}}function reduce(uint[] memory self,function (uint, uint) pure returns (uint) f)internalpurereturns (uint r){r self[0];for (uint i 1; i self.length; i) {r f(r, self[i]);}}function range(uint length) internal pure returns (uint[] memory r) {r new uint[](length);for (uint i 0; i r.length; i) {r[i] i;}}}contract Pyramid {using ArrayUtils for *;function pyramid(uint l) public pure returns (uint) {return ArrayUtils.range(l).map(square).reduce(sum);}function square(uint x) internal pure returns (uint) {return x * x;}function sum(uint x, uint y) internal pure returns (uint) {return x y;}}另外一个使用外部函数类型的例子:pragma solidity ^0.4.11;contract Oracle {struct Request {bytes data;function(bytes memory) external callback;}Request[] requests;event NewRequest(uint);function query(bytes data, function(bytes memory) external callback) public {requests.push(Request(data, callback));NewRequest(requests.length - 1);}function reply(uint requestID, bytes response) public {// 这里要验证 reply 来自可信的源requests[requestID].callback(response);}}contract OracleUser {Oracle constant oracle Oracle(0x1234567); // 已知的合约function buySomething() {oracle.query(USD, this.oracleResponse);}function oracleResponse(bytes response) public {require(msg.sender address(oracle));// 使用数据}}注解Lambda 表达式或者内联函数的引入在计划内但目前还没支持。2. 函数可见性说明符publicprivateexternalinternalpublic内部、外部均可见(参考为存储/状态变量创建 getter 函数)private仅在当前合约内可见external仅在外部可见(仅可修饰函数)——就是说仅可用于消息调用(即使在合约内调用也只能通过 this.func 的方式)internal仅在内部可见(也就是在当前 Solidity 源代码文件内均可见不仅限于当前合约内译者注)函数可见性说明符格式function myFunction() returns (bool) {return true;}3. 函数修改器pure 修饰函数时不允许修改或访问状态——但目前并不是强制的。view 修饰函数时不允许修改状态——但目前不是强制的。payable 修饰函数时允许从调用中接收 以太币Ether 。constant 修饰状态变量时不允许赋值(除初始化以外)不会占据 存储插槽storage slot 。constant 修饰函数时与 view 等价。anonymous 修饰事件时不把事件签名作为 topic 存储。indexed 修饰事件时将参数作为 topic 存储。4. 参考
http://www.ihoyoo.com/news/42989.html

相关文章:

  • 网站备案主体查询自己做网站用php最快么
  • 泉州专门制作网站6免费建站的网站
  • 管理咨询公司服务口碑好seo快速提高网站转化率
  • 重庆丰都建设局网站网页与网站的区别和关系
  • 厦门微网站制作网站设计的技术方案
  • 浙江建设监理协会官方网站现在做一个网站大概多少钱
  • 上海高端it网站建设网站主机建设方案
  • 15年做哪个网站能致富怎么注册公司邮箱
  • 如何在本地搭建网站南开区网站建设
  • 开发app和做网站深圳关键词排名首页
  • 华侨城网站开发网站创建二级域名
  • 网站外部链接添加方式网站关于我们的页面
  • 网站开发好不好兰州设计公司有哪些
  • 怎么做教育培训网站wordpress视频站插件
  • 想建一个自己的网站妇联网站建设方案
  • 大理企业网站建设长沙网络公司营销方案
  • 杭州网站推广优化公司2023年11月新冠高峰
  • 网站建设的书籍有哪些濮阳市建设局网站
  • 建设银行官方网站登录地方性手机平台微网站
  • 重庆住房城乡建设厅网站首页产品设计公司简介
  • 官方网站建设要点芜湖市网站建设
  • 公司网站建设的环境分析帝国cms如何做网站地图
  • 在哪个网站做流程图比较好看discuz wordpress主题
  • 做网站好学吗建设积分兑换官方网站
  • 网站后期推广方案网站推广方案书
  • 扁平式网站seo 内链福田祥菱v1质量怎么样
  • sketch做网站清爽帝国cms
  • 网站安全扫描工具网站备案 换空间
  • 茶网站开发方案wordpress视频存储
  • 网站管理助手4.0产品推广方案怎么写