복붙노트

[SCALA] 스칼라 루비 #tap 방법 상당 [중복]

SCALA

스칼라 루비 #tap 방법 상당 [중복]

루비는 기본 값을 수정하지 않고, 값의 파이프 라인을 관찰하기 위해 우리가 할 수있는 방법이 있습니다 :

# Ruby
list.tap{|o| p o}.map{|o| 2*o}.tap{|o| p o}

스칼라에서 이러한 방법이 있습니까? 나는 이것이 황조롱이 연결자라고 생각하지만 확신 할 수 없다.

해결법

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

    1.https://gist.github.com/akiellor/1308190 : 여기 GitHub의 하나 구현

    https://gist.github.com/akiellor/1308190 : 여기 GitHub의 하나 구현

    여기에 재현 :

    import collection.mutable.MutableList
    import Tap._
    
    class Tap[A](any: A) {
      def tap(f: (A) => Unit): A = {
        f(any)
        any
      }
    }
    
    object Tap {
      implicit def tap[A](toTap: A): Tap[A] = new Tap(toTap)
    }
    
    MutableList[String]().tap({m:MutableList[String] =>
      m += "Blah"
    })
    
    MutableList[String]().tap(_ += "Blah")
    
    MutableList[String]().tap({ l =>
      l += "Blah"
      l += "Blah"
    })
    
  2. from https://stackoverflow.com/questions/16742060/equivalent-to-rubys-tap-method-in-scala by cc-by-sa and MIT license