Solidity document에 설명 된대로 두 사업자 ||
및 &&
가 공통 단락 규칙을 적용 때문입니다 :
연산자를 || & &은 공통적 인 단락 규칙을 적용합니다. 이 은 f (x) || g (y), f (x)가 참으로 평가되면 부작용이 있더라도 g (y)는 평가되지 않습니다.
일반적인 단락 규칙 때문에 여기에 설명 된 동작은 Java 또는 Scala와 같은 다른 많은 언어와 완전히 동일합니다. 다음은 Scala REPL 데모입니다.
scala> def foo(x: Int): Boolean = { if (x >= 0) true else ??? }
foo: (x: Int)Boolean
scala> foo(10)
res0: Boolean = true
scala> foo(-10)
scala.NotImplementedError: an implementation is missing
at scala.Predef$.$qmark$qmark$qmark(Predef.scala:230)
at .foo(<console>:11)
... 32 elided
scala> if (false && !foo(-10)) "boo" else "bar"
res2: String = bar