[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.티켓은 이것에 대해,이 것은 (YT에 의해) - 4776입니다.
티켓은 이것에 대해,이 것은 (YT에 의해) - 4776입니다.
그게이 말을 가지고 소개 커밋 :
나는 jrudolph에 의해 원래의 제안을 찾을 수가 없었다,하지만 난 그것을 mapValues를보다 효율적으로하기 위해 수행 한 가정합니다. 놀라운 일이 수있는 질문을, 부여,하지만 당신은 두 번 이상 값을 반복 할 가능성이없는 경우 mapValues가 더 효율적입니다.
A와 해결 방법, 하나는 mapValues (...)를 할 수 있습니다. view.force 새로운지도를 생성 할 수 있습니다.
-
==============================
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 하나는 '힘'을 호출 할 수 있었을 것입니다 ...
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
'SCALA' 카테고리의 다른 글
[SCALA] 스칼라 데프 foo는 = {}와 데프 foo는 ()의 차이점은 = {} 무엇입니까? (0) | 2019.11.01 |
---|---|
[SCALA] 어떻게 구조화 스트리밍을 사용 카프카에서 JSON 형식의 기록을 읽어? (0) | 2019.11.01 |
[SCALA] 자바에서 구현 방법과 스칼라 특성을 사용하여 (0) | 2019.11.01 |
[SCALA] 스칼라 : 객체 목록에서 중복 제거 (0) | 2019.11.01 |
[SCALA] 스칼라의 방법 대 기능 (0) | 2019.11.01 |