aan*_*ain 10 functional-programming blockchain ethereum solidity smartcontracts
该代码产生相同的输出。
pragma solidity ^0.5.0;
contract mycontract
{
function add(uint c, uint d) public pure returns(uint)
{ uint e=c+d;
return e;
}
function add(uint j, uint k) public view returns(uint)
{ uint f=j+k;
return f;
}
}
Run Code Online (Sandbox Code Playgroud)
Yil*_*maz 16
view表示该函数不会以任何方式改变存储状态。但它允许您“查看”或阅读它
pure更严格的是,表示它连存储状态都不会读取。
纯函数是给定相同输入、始终返回相同输出的函数。但随着用户与其交互,合约的状态不断变化。因此,如果将状态变量作为参数传递给函数,由于状态正在变化,该函数将不是纯函数。这就是为什么纯函数无法访问状态的原因。
“纯”函数在数学库中大量使用。例如SafeMath.sol
同样在纯函数内部,你不能
使用address(this).balance
调用除纯函数之外的其他函数
如果您在外部调用view或pure运行,则无需支付汽油费。然而,如果由另一个函数在内部调用,它们确实会消耗gas。