단락
다음 계약을 고려하십시오.
contract shortCircuit1 {
bool flag;
function conditions(int x) external {
bool isEven = x % 2 == 0; // computation 1
bool isNotZero = x != 0; // computation 2
if (isEven && isNotZero) { // computation 3
flag = true;
} else {
flag = false;
}
}
}
contract shortCircuit2 {
bool flag;
function conditions(int x) external {
if (x % 2 == 0 && x != 0) { // 3 computations only if x % 2 == 0 is true, else only 1 computation
flag = true;
} else {
flag = false;
}
}
}
두 계약 모두 동일한 조건을 따르며 함수에 대한 입력은 짝수이고 0보다 커야 합니다. 조건이 참이면 상태 변수
flag
가 참으로 설정됩니다. 그리고 이전 함수 호출flag
이 true이고 다음 호출이 두 조건을 모두 충족하지 않는 경우flag
는 false로 설정됩니다.이제 함수 내부에 작성된 조건에 초점을 맞추겠습니다.
단락1
함수 입력 - 0
두 조건을 모두 계산한 다음 세 번째 계산을 수행하여 두 조건이 모두 참인지 확인합니다.
단락2
함수 입력 - 0
첫 번째 조건이 참인 경우에만 두 번째 조건을 계산합니다(단락). 따라서 계산 비용을 절약할 수 있습니다.
참고: 위에 주어진 예에서 가스의 차이는 매우 적습니다. 긴 비교 계산(예: 문자열 또는 배열)을 상상해 보십시오. 이러한 경우 가스 차이가 상당할 것입니다.
Reference
이 문제에 관하여(단락), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rushanksavant/short-circuiting-50hg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)