forked from AmazingAng/WTF-Solidity
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ModifierInheritance.sol
31 lines (25 loc) · 1.22 KB
/
ModifierInheritance.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;
contract Base1 {
modifier exactDividedBy2And3(uint _a) virtual {
require(_a % 2 == 0 && _a % 3 == 0);
_;
}
}
contract Identifier is Base1 {
//Calcular o valor de um número dividido por 2 e por 3, mas o parâmetro fornecido deve ser um múltiplo de 2 e 3.
function getExactDividedBy2And3(uint _dividend) public exactDividedBy2And3(_dividend) pure returns(uint, uint) {
return getExactDividedBy2And3WithoutModifier(_dividend);
}
//Calcular o valor de um número dividido por 2 e por 3
function getExactDividedBy2And3WithoutModifier(uint _dividend) public pure returns(uint, uint){
uint div2 = _dividend / 2;
uint div3 = _dividend / 3;
return (div2, div3);
}
//Sobrescrevendo o modificador: Se não for sobrescrito, ao chamar getExactDividedBy2And3 com entrada 9, ocorrerá um revert, pois não passará na verificação.
//Remova as três linhas de comentário abaixo e reescreva o Modificador. Quando você digitar 9 e chamar getExactDividedBy2And3, a chamada será bem-sucedida.
// modifier exactDividedBy2And3(uint _a) override {
modifier exatoDivididoPor2E3(uint _a) override {
// }
}