반응형
스칼라는 요소가 목록에 있는지 확인합니다.
목록에 문자열이 있는지 확인하고 그에 따라 부울을 받아들이는 함수를 호출해야합니다.
하나의 라이너로 이것을 달성 할 수 있습니까?
아래 코드는 내가 얻을 수있는 최선의 방법입니다.
val strings = List("a", "b", "c")
val myString = "a"
strings.find(x=>x == myString) match {
case Some(_) => myFunction(true)
case None => myFunction(false)
}
적은 코딩으로 이것을 할 수 있다고 확신하지만 방법을 모르겠습니다!
그냥 사용 contains
myFunction(strings.contains(myString))
그리고 엄격한 평등을 사용하고 싶지 않다면 exist를 사용할 수 있습니다.
myFunction(strings.exists { x => customPredicate(x) })
더 쉽습니다!
strings contains myString
이것은 다른 술어에서도 작동합니다.
myFunction(strings.find( _ == mystring ).isDefined)
귀하의 경우에는 고유 한 값 만 가지도록 목록이 아닌 세트를 사용하는 것을 고려할 것입니다. 때때로 중복을 포함 할 필요가없는 한.
이 경우 목록 주위에 래퍼 함수를 추가 할 필요가 없습니다.
를 사용하여 contains
메서드를 구현할 수도 있습니다 foldLeft
. 매우 훌륭합니다. 저는 foldLeft 알고리즘을 좋아합니다.
예를 들면 :
object ContainsWithFoldLeft extends App {
val list = (0 to 10).toList
println(contains(list, 10)) //true
println(contains(list, 11)) //false
def contains[A](list: List[A], item: A): Boolean = {
list.foldLeft(false)((r, c) => c.equals(item) || r)
}
}
참고 URL : https://stackoverflow.com/questions/14267612/scala-check-if-element-is-present-in-a-list
반응형
'Programing' 카테고리의 다른 글
scala.collection.mutable.Map에 요소를 추가하는 구문은 무엇입니까? (0) | 2020.10.24 |
---|---|
Winform 앱의 기본 버튼 속성 (0) | 2020.10.24 |
Chrome의 파일 입력에서 "선택된 파일 없음"툴팁을 제거하려면 어떻게해야합니까? (0) | 2020.10.23 |
컨트롤러에서 CakePHP의 SQL 덤프를 어떻게 볼 수 있습니까? (0) | 2020.10.23 |
Oracle PL / SQL-사용자 지정 SQLERRM을 사용하여 사용자 정의 예외 발생 (0) | 2020.10.23 |