Solidity
檢查數組所有元素的條件
我需要檢查數組 (
uint[]
) 中的所有元素是否都在特定範圍內。我想知道是否有更好的方法來做到這一點。這就是我現在想出的:
contract MyContract { /* ... */ function pickNumbers(uint[5] memory _stdNumbers, uint memory _specialNumber) public { for(uint i=0; i<_stdNumbers.length; i++) { require(_stdNumbers[i] > 0 && _stdNumbers[i] < 70, "Invalid standard number"); } require(_specialNumber > 0 && _specialNumber < 27, "Invalid special number"); // DO SOMETHING } }
提前致謝。
就是這樣。你可以節省一些氣體:
function pickNumbers(uint[5] memory _stdNumbers, uint memory _specialNumber) public { for(uint i=0; i<5;) { require(_stdNumbers[i] > 0 && _stdNumbers[i] < 70, "Invalid standard number"); unchecked { i += 1 } } require(_specialNumber > 0 && _specialNumber < 27, "Invalid special number"); // DO SOMETHING }
或者如果它只有 5 個,最好只寫 5 個 require 語句
require(_stdNumbers[0] > 0 && _stdNumbers[0] < 70, "Invalid standard number"); require(_stdNumbers[1] > 0 && _stdNumbers[1] < 70, "Invalid standard number"); ....