基于以太坊的智能合约开发教程Solidity modifier
pragma solidity ^0.4.0;
contract modifierTest{
address owner;
uint public a;
constructor(){
owner = msg.sender;
}
modifier onlyOwner{
// 判断合约的调用者是否等于合约的拥有者
require(msg.sender == owner);
_;
}
function test1(uint _a) onlyOwner{
// 附加上了modifier,先执行修饰符函数中的语句
a = _a;
}
}
contract modifierTest1{
uint level = 5;
string public name;
uint public DNA;
// 增加代码的重用性和拓展性
modifier controller(uint _level){
require(level >= _level);
_;
}
function changeName(string _name) controller(2){
name = _name;
}
function changeDNA(uint _DNA) controller(4){
DNA = _DNA;
}
}
contract modifierTest2{
uint public a;
modifier change1(){
a = 10;
_;
a = 20;
}
modifier change2(){
a = 30;
_;
a = 40;
}
// 当有两个修饰符函数时,先执行change1中的a=10;然后进入到change2当中的a=30;
// 再进入到自己的函数体内a=100;再执行a=40;然后回到change1当中执行a=20 最后a的值为20
function test() change1 change2{
a = 100;
}
}
|