2013-04-15 2 views
0

나는 referrals: Map[String, Referral]을 가지며, 해당 위상 객체가 몇 개 있는지를 계산하는 가장 좋은 방법을 찾고 있습니다.특정 속성을 가진지도 객체를 계산하는 스칼라

case class Referral(
    name: String, 
    phase: String 
) 

나는 "1 위상"와 같은 phase이 얼마나 많은 수를해야합니다.

"phase1"을 사용하여 Referrals를 수집하고 Iterable로 가져 오기 위해 Map을 반복 할 수는 있었지만 불필요한 추가 단계이지만 내 머리를 감쌀 수없는 직감이 있습니다. 이 fluidly.

val phase1_refs = for (ref <- referrals.values if ref.phase == "phase1") yield ref.name 
val phase1_count = phase1_refs.size 

for를 사용하여 phase1_refs의 크기를 가져 오는 구문은 무엇입니까? 나는 값에 대한 필터를 가지고 놀았지만 자신을 혼란스럽게합니다.

감사합니다.

+0

는 또 다른 단계로 (예 일치하는 열거 클래스를 설정하는 멋진 것입니다. 열거 {위상 1, 2 위상, ...}뿐만 아니라,하지만 난 앞서 자신의 무엇입니까. – Brian

+0

Ha/Doh. 괄호 안에 for를 감싸고 크기를 얻는 것만 큼 간단 할까? 'val count = (for (ref <- referrals.values ​​if ref.phase == "phase1") yield ref.name) .size ' – Brian

+0

네, 그래도 작동합니다.하지만'count'를 사용하는 것이 더 읽기 쉽습니다. – gzm0

답변

0

사용

referrals.values.count(_.phase == "phase1")