나는 문자열이있는 경우 변수 x
어떤 이유로 ""
입니다 :스칼라 변수는 진정한 반환
val x = ""
내가 할 : 그것이 true
x.forall(_.isDigit)
나는 왜 그것이 사실인지 조금 당황한가? if 조건이 작동하지 않을 때 어려운 방법을 발견했습니다. 는 다음 나는 스칼라 소스 코드를 보러 갔다 :
private def prefixLengthImpl(p: A => Boolean, expectTrue: Boolean): Int = {
var i = 0
while (i < length && p(apply(i)) == expectTrue) i += 1
i
}
override /*IterableLike*/
def forall(p: A => Boolean): Boolean = prefixLengthImpl(p, expectTrue = true) == length
그래서 명백하게는 "공허 진실"원칙을 잡고, 그리고 카운터 이후 변수 i
는 0
로 반환됩니다 내 문자열의 길이가, 그것을 또한 0
입니다 결국 0==0
이되어 결국 true
이됩니다. forall
을 수행하기 전에 x.isEmpty
을 수행 할 필요가 없습니다.
정확히 어떤 질문입니까? – folone