복붙노트

[SCALA] 지도 운영에 튜플 포장 풀기

SCALA

지도 운영에 튜플 포장 풀기

나는 자주, 자신 목록, Seqs 작업 및 튜플의 반복자하고 다음과 같은 일을하고 싶습니다 찾기

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 
}

어느 단지 바보입니다. 어떻게이 주위를받을 수 있나요?

해결법

  1. ==============================

    1.업무용 주위는 사용 사례이다 :

    업무용 주위는 사용 사례이다 :

    arrayOfTuples map {case (e1: Int, e2: String) => e1.toString + e2}
    
  2. ==============================

    2.tupled 기능과 같은 I; 그것은 모두 편리가 아닌 이상, 안전 입력 :

    tupled 기능과 같은 I; 그것은 모두 편리가 아닌 이상, 안전 입력 :

    import Function.tupled
    arrayOfTuples map tupled { (e1, e2) => e1.toString + e2 }
    
  3. ==============================

    3.왜 사용하지 않는

    왜 사용하지 않는

    arrayOfTuples.map {t => t._1.toString + t._2 }
    

    어디 _ 작업 매개 변수를 여러 시간 또는 다른 순서, 또는 중첩 된 구조로하지 않는이 필요한 경우,

    arrayOfTuples map {case (i, s) => i.toString + s} 
    

    짧은하지만, 읽을 수있는 형태가 될 것으로 보인다.

  4. ==============================

    4.또 다른 옵션은

    또 다른 옵션은

    arrayOfTuples.map { 
        t => 
        val (e1,e2) = t
        e1.toString + e2
    }
    
  5. ==============================

    5.도티 (스칼라 (3)의 재)와, 파라미터가 untupling 확장 같은 구문을 허용되었음을주의 :

    도티 (스칼라 (3)의 재)와, 파라미터가 untupling 확장 같은 구문을 허용되었음을주의 :

    // val tuples = List((1, "Two"), (3, "Four"))
    tuples.map(_.toString + _)
    // List[String] = List("1Two", "3Four")
    

    여기서 각 튜플 _ 관련 부분을 위해 말한다.

  6. ==============================

    6.나는 이해가 가장 자연스러운 솔루션은 여기에 대한 생각 :

    나는 이해가 가장 자연스러운 솔루션은 여기에 대한 생각 :

    for ((e1, e2) <- arrayOfTuples) yield {
      e1.toString + e2
    }
    
  7. from https://stackoverflow.com/questions/6905207/tuple-unpacking-in-map-operations by cc-by-sa and MIT license