函数的定义
- function:function关键字声明合约中的可执行单元
- 函数的完整定义:
function (funcName) (<parameter types>) {public|external|internal|private} [constant|view|payable] [returns (<return types>)]
函数的调用方式
-
internal(内部调用方式):就是直接使用函数名去调用函数
pragma solidity ^0.4.24;
contract testInternal {
function A(){
this.balance;
}
function B(){
A();
}
}
-
external(外部调用方式):就是使用合约实例名.函数名的方式去调用函数。
(虽然当前合约A和B的代码放在一起,但部署到网络上后,它们是两个完全独立的合约,它们之间的方法调用是通过消息调用。)
pragma solidity ^0.4.24;
contract test1{
function A() external{
}
}
contract test2{
function B(test1 a){
a.A();
}
}
- this:在合约的调用函数前加this.来强制以external方式的调用。
pragma solidity ^0.4.24;
contract Test {
function A() external {
}
function B(){
this.A();
}
}
函数可见性
四种函数可见性::external,public,internal,private
- external:(外部函数)
- 声明为external的函数可以从其他合约来进行调用,所以声明external的函数是合约对外接口的一部分
- 不能使用internal的方式进行调用,如果以internal方式调用报异常:Error: Undeclared identifier.
- 在接受大的数据数组是性能更好
- public:(公共函数)
- 函数声明默认为public
- public的函数既允许以internal的方式调用,也允许以external的方式调用
- public的函数允许被外部合约访问,是合约对外接口的一部分。