[英]Should I require a specific condition when working with indexes in Solidity?
pragma solidity ^0.4.0;
contract A{
byte[10] arr;
function setElement(uint index, byte value) public {
require(index >= 0 && index < arr.length); //Should I leave it as is?
arr[index] = value;
}
function getElement(uint index) view public returns (byte) {
require(index >= 0 && index < arr.length); //Or not?
return arr[index];
}
}
据我所知,断言样式异常是在以下情况下产生的,而不仅是:
但是我应该每次检查状况吗?
我也想将剩余的汽油退还给执行人。
您正在正确使用它。 require
旨在用于检查输入参数,而assert
则用于验证合同的内部(主要用于测试目的)。 如果require
条件失败,剩余的气体将被退还。
从Solidity文档中 :
便利函数assert和require可以用于检查条件,如果不满足条件则抛出异常。 assert函数仅应用于测试内部错误和检查不变性。 require函数应用于确保满足输入或合同状态变量之类的有效条件,或用于验证从调用外部合同获得的返回值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.