반응형
Scala : "any"및 "all"함수
내 Haskell *은 약간 녹슬 어서 명백한 것을 놓치고 있다고 상상할 수 있습니다.
def any[A](s: Traversable[A], f: A => Boolean): Boolean = {
s.foldLeft(false)((bool, elem) => bool || f(elem))
}
이 속성 중 하나가 IT에 적용됩니까?
- Scala libs 어딘가에 사전 정의
- 상황에 따라 빠르고 한 줄로 작성
- 틀렸다 (나는 그것을 테스트하지 않았다, 미안하다;))
* 실제로 SML이지만 99 % 동일하지만 태양 아래서 아무도 알 수 없습니다.
미리 정의되어 있으며
exists
. 그리고forall
당신이 찾고있는 "모든"기능이 될 것입니다.scala> Vector(3, 4, 5).exists(_ % 2 == 0) res1: Boolean = true scala> Vector(3, 4, 5).forall(_ % 2 == 0) res2: Boolean = false
(from )
for
과 함께 루프를 사용하여 더 성능을 높일 수 있습니다 . ( 및 의 표준 라이브러리 구현을 참조하십시오 .)break
scala.util.control.Breaks
exists
forall
맞습니다.
any
및 all
다음 과 같은 Traversable 특성에 메서드가 있습니다 .
def all[A](xs: Traversable[A], p: A => Boolean): Boolean = xs forall p
def any[A](xs: Traversable[A], p: A => Boolean): Boolean = xs exists p
- 아니요 그 이름으로 미리 정의되어 있지 않습니다.
exists
Traversable 패키지에서 사용할 수 있습니다 . 구현의 가장 큰 단점은
any
이미 답변을 제공 할 수있는 경우에 대한 모든 순회 가능을 소비해야한다는 것 입니다. 동일은 간다all
. 그러나 전체 시퀀스를 평가하지 않도록 쉽게 구현할 수 있습니다. 또 다른 해결책은 이러한 유형의 작업을위한 모나드를 구현하는 것입니다. 그런 다음 전화합니다.a and b and c
이는a.and(b).and(c)
맞습니다.
BTW, 내가 찾은 또 다른 기능은 sum
기능입니다.
어때 exists
:
scala> List(1,2,3).exists(_ > 2)
res12: Boolean = true
그것은에의 에 이동 .
참고 URL : https://stackoverflow.com/questions/6390797/scala-any-and-all-functions
반응형
'programing tip' 카테고리의 다른 글
높은 수준의 단위 테스트 및 모의 개체의 가치 (0) | 2020.12.02 |
---|---|
Mysysgit“(END)”가 표시됩니다. 어떻게 진행합니까? (0) | 2020.12.02 |
Git Bash로 사용자 및 비밀번호 구성 (0) | 2020.12.01 |
'관리자 권한으로 실행'은 정확히 무엇을합니까? (0) | 2020.12.01 |
git reset은 'more?'를 묻습니다. (0) | 2020.12.01 |