지도와 널 건너 뛰기가 한 번의 호출로 표현되는 방식으로 다음 코드를 표현할 수 있습니까? 당신이스칼라에서 맵과 필터가 null 인 경우
for {
item <- list
itemConverted = item.accept(this, arg).asInstanceOf[T]
itemNonNull = itemConverted if itemConverted != 0
} yield itemNonNull
이 가능할 것이다 collect
을 사용하여 (이것은 원래의 표현에 더 많거나 적은 변환됩니다 불구하고), 좋아하지만 경우
list.map(_.accept(this, arg).asInstanceOf[T]).filter(_ != null)
을'그 _.accept (이, ARG) ''null '을 반환 할 수 있습니다. 이 경우에는 약간 더 관용적이다. (여전히 두 번 호출이있다.)'list.map (i => Option (i.accept (this, arg) .asInstanceOf [T])). flatten' –
' 잘못되었지만'map'과'filter'의 조합을'collect'하지 않았습니까? 아니면 다른 방법 이었습니까? 또는 나는 틀린가? ;) – agilesteel
@agilesteel, 예, collect가 작동 할 수 있습니다. 코드 스 니펫을 제공 할 수 있습니까? –