반응형
지도 작업에서 튜플 풀기
나는 종종 튜플의 Lists, Seqs 및 Iterators로 작업하고 있으며 다음과 같은 작업을하고 싶습니다.
val arrayOfTuples = List((1, "Two"), (3, "Four"))
arrayOfTuples.map { (e1: Int, e2: String) => e1.toString + e2 }
그러나 컴파일러는이 구문에 동의하지 않는 것 같습니다. 대신 나는 글을 쓰게됩니다.
arrayOfTuples.map {
t =>
val e1 = t._1
val e2 = t._2
e1.toString + e2
}
어리석은 일입니다. 이 문제를 어떻게 해결할 수 있습니까?
해결 방법은 다음을 사용하는 것입니다 case
.
arrayOfTuples map {case (e1: Int, e2: String) => e1.toString + e2}
나는 tupled 함수를 좋아한다. 편리하고 중요한 것은 안전합니다.
import Function.tupled
arrayOfTuples map tupled { (e1, e2) => e1.toString + e2 }
왜 사용하지 않습니까
arrayOfTuples.map {t => t._1.toString + t._2 }
매개 변수가 여러 번 필요하거나 다른 순서로 필요하거나 중첩 된 구조에서 _가 작동하지 않는 경우,
arrayOfTuples map {case (i, s) => i.toString + s}
짧지 만 읽을 수있는 형식 인 것 같습니다.
또 다른 옵션은
arrayOfTuples.map {
t =>
val (e1,e2) = t
e1.toString + e2
}
참고로 Dotty
(재단 Scala 3
) 파라미터 untupling가 확장 같은 구문을 허용되었습니다
// val tuples = List((1, "Two"), (3, "Four"))
tuples.map(_.toString + _)
// List[String] = List("1Two", "3Four")
여기서 각각 _
은 연관된 튜플 부분을 참조합니다.
참고 URL : https://stackoverflow.com/questions/6905207/tuple-unpacking-in-map-operations
반응형
'Programing' 카테고리의 다른 글
_CRT_SECURE_NO_DEPRECATE를 통해 생성 된 경고 비활성화 (0) | 2020.10.26 |
---|---|
MySQL에서 인덱스 크기를 알아내는 방법 (0) | 2020.10.26 |
MongoDB는 서버 충돌 후 시작되지 않습니다. (0) | 2020.10.26 |
쿼리와 같은 안전한 ActiveRecord (0) | 2020.10.26 |
한 데이터베이스에서 다른 데이터베이스로 테이블 값을 삽입하는 방법은 무엇입니까? (0) | 2020.10.26 |