सॉलिडिटी - फंक्शन मोडिफायर्स
फ़ंक्शन संशोधक का उपयोग किसी फ़ंक्शन के व्यवहार को संशोधित करने के लिए किया जाता है। एक समारोह में एक शर्त जोड़ने के लिए उदाहरण के लिए।
पहले हम पैरामीटर के साथ या उसके बिना एक संशोधक बनाते हैं।
contract Owner {
modifier onlyOwner {
require(msg.sender == owner);
_;
}
modifier costs(uint price) {
if (msg.value >= price) {
_;
}
}
}
फ़ंक्शन बॉडी को सम्मिलित किया जाता है जहां विशेष प्रतीक "_;" एक संशोधक की परिभाषा में दिखाई देता है। इसलिए यदि इस फ़ंक्शन को कॉल करते समय संशोधक की स्थिति संतुष्ट है, तो फ़ंक्शन निष्पादित किया जाता है और अन्यथा, एक अपवाद फेंक दिया जाता है।
नीचे दिए गए उदाहरण देखें -
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;
}
}