solidity的modifier修飾符
什么是modifier修飾符
修飾器(modifier)是solidity特有的語法,類似于面向對象編程中的decorator,聲明函數擁有的特性,并減少代碼冗余。
Solidity 中關鍵字 modifier 用于聲明一個函數修改器。當它作用于一個函數上,可以在函數執行前或后(依賴于具體實現)預先執行modifier中的邏輯。
結合現實場景中的應用。在一些敏感操作中,我們需要設定特定的權限才允許執行相關操作;再者我們可以利用函數修改器進行數據的校驗;
常用于如:檢查輸入條件、權限控制、重入控制、防止重復初始化等場景。
定義修飾符
函數修改器的定義語法如下:
modifier 修改器名 {條件體.._;
}function a() 修改器名 {函數體..
}
函數修改器中有一行代碼只有下劃線 _ ,在實際執行中,我們可以將被修飾函數的代碼視為下劃線處的代碼。即,下劃線實際上幫我們標記了被modifier修飾函數的執行位置。
onlyOwner示例
pragma solidity >=0.8.0;contract owned {function owned() public { owner = msg.sender; }address owner;modifier onlyOwner {require(msg.sender == owner, "Only owner can call this function.");_;}function transferOwner(address _newO) public onlyOwner {owner = _newO;}
}
在這個示例中,onlyOwner修飾器用于限制只有合約所有者可以調用該函數。如果條件滿足就繼續往下走,不滿足返回字符串“Not owner”。
“_;” 表示在執行修飾器之后將控制流交給被修飾函數的實際執行代碼塊。
參考
[推薦,視頻講解清晰]【20】Solidity的modifier函數修改器
參考URL: https://www.bilibili.com/video/BV1am411k7VW/