阅读它所说的文档“以声明的方式向函数添加语义”
我可以将它理解为Java中的“接口”吗?
答案 0 :(得分:13)
修饰符允许您将其他功能包装到方法中,因此它们有点像OOP中的装饰器模式。
修饰符通常用于智能合约中,以确保在继续执行方法中的其余代码之前满足某些条件。
例如,spring.jpa.hibernate.naming.implicit-strategy=
org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
spring.jpa.hibernate.naming.physical-strategy=
org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
通常用于确保方法的调用者是合同的所有者:
isOwner
您还可以堆叠多个修改器以简化您的程序:
modifier isOwner() {
if (msg.sender != owner) {
throw;
}
_; // continue executing rest of method body
}
doSomething() isOwner {
// will first check if caller is owner
// code
}
修饰符以声明性和可读的方式表达正在发生的操作。
答案 1 :(得分:1)
这只是确保有人调用特定函数时满足特定属性的标准。
您可以创建自己的修饰符:)
示例1:
modifier owner() {
if (msg.sender != owner) {
throw;
}
_; // continue executing rest of method body
}
doSomething() isOwner {
// will first check if caller is owner
// code
}
示例2:
uint256 thisNumber = 4;
modifier HigherThan2(uint256 _x) {
if (_x < 2) {
throw;
}
_; // continue executing rest of method body
}
doMathStuff() HigherThan2(thisNumber) {
// will check if thisNumber is higher than 2
// then, more code
}
另一方面,您可以使用预定义的修饰符,例如payable
。
function ThisSuperICO() payable {
require (msg.value > 0);
// more code
}
基本上是处理条件的标准,当不满足这些条件时抛出呼叫。
希望这会有所帮助!
干杯。
答案 2 :(得分:0)
修饰符是一段代码,由开发人员定义的某种验证类型的规则或逻辑组成。这段代码用于可重用性。 它是在牢固定义函数时传入的,其目的是在运行相应功能之前进行一些验证,现在,如果验证失败,则相应功能将不会执行。
与node.js / express-framework相似:-可以将其视为中间件功能。
具有html表单验证功能的类比:-通过验证函数调用触发提交时,如果验证失败,则提交被中止。