pragma solidity^0.5.0;
contract modifierTest{
address public owner;
uint public num = 0;
constructor() public{
owner = msg.sender;
}
//定义modifier
modifier OnlyOwner{
require(msg.sender == owner);//判断当前调用合约的地址是不是owner,不是就不执行下边的函数
_;//先执行require,再执行 下边的函数
}
//附加上了modifier
function changeIt(uint _num) public {
num = _num;
}
}
//用modifier实现用户只能注册一次
modifier control{
require ( idmapping[msg.sender]== 0);
_;
}
function register(string memory name) public control{
address account = msg.sender;
sum++;
idmapping[account] = sum;
namemapping[sum] = name;
}
pragma solidity^0.5.0;
contract modifierTest{
uint public level = 0;
string name;
uint DNA = 9;
//手动输入自己的等级,然后可以进行升级,改名改DNA
function uplevel(uint _level) public returns(uint){
level = _level;
}
modifier control(uint needLevel){
require(level >= needLevel);
_;
}
function changeName() public control(2){
// require( level>=2 );
name = "tck";
}
function changeDNA() public control(10){
// require( level>=10 );
DNA = 999;
}
function getName() public view returns(string memory){
return name;
}
function getDNA() public view returns(uint){
return DNA;
}
}
pragma solidity>=0.5.0;
contract mulmodifier{
uint public a = 0;
modifier mod1{
a= 1;
_;
a= 2;
}
modifier mod2{
a= 3;
_;
a=4;
}
//modifier执行顺序: a=1, a=3 , a=100,a=4, a=2;
function test() public mod1 mod2{
a= 100;
}
//modifier执行顺序:a=3,a=1,a=100,a=2,a=4
function test2() public mod2 mod1{
a= 100;
}
}