solidity文档--函数调用方式

更新时间:2023-05-17 19:29:05 阅读: 评论:0

solidity⽂档--函数调⽤⽅式
solidity封装了两种函数的调⽤⽅式:internal和external,下⾯将具体介绍这两种调⽤⽅式的区别真皮沙发保养
1. internal
internal调⽤,即内部调⽤,不创建⼀个真实的EVM调⽤(消息调⽤),可以直接引⽤合约内的数据。在当前的代码单元内,如调⽤当前合约内定义的函数、引⼊库的函数以及继承的⽗合约内的函数可以以internal的⽅式直接调⽤,例如:
头发养护>虎妞怎么死的pragma solidity ^0.4.0;
contract Test{
function f(){}
function callInternally(){
f();
}
}
在上⾯这段代码内,callInternally()函数调⽤了当前合约内的另⼀个函数f(),这种调⽤⽅式便是internal内部调⽤
2. external
external调⽤,即外部调⽤,也就是说从合约外部调⽤,会创建⼀个EVM调⽤(发起消息调⽤)。因此在合约初始化的时候不能以external 的⽅式调⽤当前合约内的函数,因为合约还未初始化,例如:
pragma solidity ^0.4.0
contract A{
function f(){}
}
迎新春对联contract B{
function callExternal(A a){
a.f();
}
}
上⾯这段代码中,B合约内的callExternally()函数中使⽤a.f()的⽅式(a是合约A的⼀个实例)调⽤了当前合约外部的函f(),这种调⽤⽅式便是external外部调⽤
3. this
我们之前说过solidity中封装了两种调⽤函数的⽅式:external和internal,那么这⾥为什么会出现第三种呢?其实this是强制external调⽤⽅式,也就是说在当前合约内可以在调⽤函数前加上this.来强制调⽤当前和合约内的函数,例如:
pragma solidity ^0.4.0;
contract A{
function f()internal{}
桃运青年
function callInternally(){
f();
}
房屋平面图怎么画function callExternally(){
实木多层地板好吗this.f();
}
}
能温席上⾯这段代码中,合约A中的函数f()已经声明了internal,说明只能内部调⽤,因此合约A中的函数callInternally()是可以正常调⽤函数f()的,但是合约A中的另⼀个函数callExternally()则是通过this.f()的⽅法强制使⽤外部调⽤,这样运⾏时便会报错。

本文发布于:2023-05-17 19:29:05,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/671624.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:合约   函数   说明   代码   虎妞   真皮沙发   消息
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图