복붙노트

[SCALA] 스칼라 : mapValues이보기를 생산하고 안정적인 대안이 왜?

SCALA

스칼라 : mapValues이보기를 생산하고 안정적인 대안이 왜?

그냥 지금은 mapValues이보기를 생산하는 것을 알고 놀란다. 결과는 다음 예에 표시됩니다

case class thing(id: Int)
val rand = new java.util.Random
val distribution = Map(thing(0) -> 0.5, thing(1) -> 0.5)
val perturbed = distribution mapValues { _ + 0.1 * rand.nextGaussian }
val sumProbs = perturbed.map{_._2}.sum
val newDistribution = perturbed mapValues { _ / sumProbs }

아이디어는 내가 그것을 재 정규화 한 후 약간의 임의성과 교란 된 분포를 가지고있다. 코드는 실제로 원래의 의도에 실패 mapValues보기를 생성하기 때문에, _ + 0.1 * rand.nextGaussian가 항상 사용됩니다 교란 할 때마다 다시 평가됩니다.

지금 분포지도 {경우 (S, P) => (S, P + 0.1 * rand.nextGaussian)}과 같은 일을하고 있어요,하지만 조금 자세한입니다. 그래서이 질문의 목적은 다음과 같습니다

감사.

해결법

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

    1.티켓은 이것에 대해,이 것은 (YT에 의해) - 4776입니다.

    티켓은 이것에 대해,이 것은 (YT에 의해) - 4776입니다.

    그게이 말을 가지고 소개 커밋 :

    나는 jrudolph에 의해 원래의 제안을 찾을 수가 없었다,하지만 난 그것을 mapValues를보다 효율적으로하기 위해 수행 한 가정합니다. 놀라운 일이 수있는 질문을, 부여,하지만 당신은 두 번 이상 값을 반복 할 가능성이없는 경우 mapValues가 더 효율적입니다.

    A와 해결 방법, 하나는 mapValues ​​(...)를 할 수 있습니다. view.force 새로운지도를 생성 할 수 있습니다.

  2. ==============================

    2.스칼라 문서 말 :

    스칼라 문서 말 :

    그래서이 예상, 그러나 이것은 나에게 많이 무서워한다, 나는 코드 내일의 무리를 검토해야합니다. 그 :-( 같은 행동을 기대되지 않았습니다

    그냥 다른 해결 방법 :

    당신은 사본을 얻을 수 toSeq를 호출 할 수 있습니다, 당신은 toMap를 매핑을 다시해야하는 경우, 그러나 이것은 불필요한 개체를 생성하고,지도를 사용을 통해 성능 의미를 가지고

    ) 하나는 뷰를 생성하지 않는 mapValues, 나는 그것을 내일을 상대적으로 쉽게 쓰기를 할거야, 그리고 아무도 내 앞에 그것을하지 않는 경우 여기에 코드를 게시 할 수 있습니다

    편집하다:

    나는보기 '힘'을하는 쉬운 방법을 발견 mapValues ​​후 (특정 기능을 구현 그래서 필요) '.MAP (정체성)'를 사용하지 :

    scala> val xs = Map("a" -> 1, "b" -> 2)
    xs: scala.collection.immutable.Map[java.lang.String,Int] = Map(a -> 1, b -> 2)
    
    scala> val ys = xs.mapValues(_ + Random.nextInt).map(identity)
    ys: scala.collection.immutable.Map[java.lang.String,Int] = Map(a -> 1315230132, b -> 1614948101)
    
    scala> ys
    res7: scala.collection.immutable.Map[java.lang.String,Int] = Map(a -> 1315230132, b -> 1614948101)
    

    그것은 반환 유형이 실제로 볼 수없는 수치이다! othewise 하나는 '힘'을 호출 할 수 있었을 것입니다 ...

  3. from https://stackoverflow.com/questions/14882642/scala-why-mapvalues-produces-a-view-and-is-there-any-stable-alternatives by cc-by-sa and MIT license