2016-08-29 1 views
-1

에 내가 한 문자열해야한다는 오류를 얻고 텍스트foldLeft 방법은 스칼라

.foldLeft(Map.empty[String, Float]){ 
    (countsSource, wordSource) => countsSource + (wordSource -> (countsSource.getOrElse(wordSource, 0) + 1))} 

단어의 수를 얻기 위해 다음 코드를 사용하고 있습니다. 나는 그것을 따옴표에 넣으면 플로트 여야한다고 말한다.

내가 뭘 잘못하고 있니? 그것은 반드시지도의 값 (B)의 유형을 반환하지 않는 것을 의미

def getOrElse[B1 >: B](key: A, default: => B1): B1 

, 그러나 잠재적으로 슈퍼 클래스 B1 다음과 같이 사전에 당신의 도움을 주셔서 감사합니다

+0

나는 스칼라에서 초보자입니다. 저는 아무런 효과없이 1에서 1.0으로 변경하려고했습니다! – kavita

답변

1

getOrElse의 서명입니다. 귀하의 경우, 0 리터럴을 사용하여 Float에 관심이 있다는 것을 컴파일러에 알리지 않습니다.

를 해결하는 것 대신에 0f 사용 :

l.foldLeft(Map.empty[String, Float]){ 
    (countsSource, wordSource) => countsSource + (wordSource -> (countsSource.getOrElse(wordSource, 0f) + 1))}