Solidity - Funktionsmodifikatoren
Funktionsmodifikatoren werden verwendet, um das Verhalten einer Funktion zu ändern. Zum Beispiel, um einer Funktion eine Voraussetzung hinzuzufügen.
Zuerst erstellen wir einen Modifikator mit oder ohne Parameter.
contract Owner {
modifier onlyOwner {
require(msg.sender == owner);
_;
}
modifier costs(uint price) {
if (msg.value >= price) {
_;
}
}
}
Der Funktionskörper wird dort eingefügt, wo das Sonderzeichen "_;" erscheint in der Definition eines Modifikators. Wenn also die Bedingung des Modifikators beim Aufrufen dieser Funktion erfüllt ist, wird die Funktion ausgeführt und andernfalls wird eine Ausnahme ausgelöst.
Siehe das folgende Beispiel -
pragma solidity ^0.5.0;
contract Owner {
address owner;
constructor() public {
owner = msg.sender;
}
modifier onlyOwner {
require(msg.sender == owner);
_;
}
modifier costs(uint price) {
if (msg.value >= price) {
_;
}
}
}
contract Register is Owner {
mapping (address => bool) registeredAddresses;
uint price;
constructor(uint initialPrice) public { price = initialPrice; }
function register() public payable costs(price) {
registeredAddresses[msg.sender] = true;
}
function changePrice(uint _price) public onlyOwner {
price = _price;
}
}