2017-11-16 2 views
0

의 목록을 제공하고이 결과 :스칼라 .MAP (toString는()) 내가 스칼라 내 자신의지도 방법을 만들려고 숯불

def map[A, B](f: A => B)(as: List[A]): List[B] = 
    for (i <- as) yield f(i) 

그리고 목록 [지능]로 변환하려고하면

list.map(toString())    //> res1: List[Char] = List(e, b, u, n, g) 

내 질문 : 목록 [문자열] : 내가하려고하면

val list = List(1, 2, 3, 4, 5) //> list : List[Int] = List(1, 2, 3, 4, 5) 
map(toString()) (list)   //> res0: List[Char] = List(e, b, u, n, g) 

나는 같은 결과를 얻을 toString을주는 이유는()가 아닌 목록 ("1", "2".. .)?

답변

3

현재 개체 ("? ebung ..."와 같은 것을 반환 함)에서 toString()을 호출하고 결과 문자열을 map에 인수로 전달합니다.

따라서 map에 함수가 필요하지만 문자열을 전달하기 때문에 형식 오류가 발생할 수 있습니다. 그러나 문자열은 함수로 계산됩니다 (RichStringFunction1[Int, Char] 특성을 구현하기 때문에). 정수를 취하여 해당 인덱스에서 문자를 반환합니다. 그래서 그 문자들을 포함하는 목록을 얻습니다.

의도 한대로 수행하려면 (인수에 toString을 호출하는 함수를 작성하십시오), x => x.toString 또는 _.toString을 짧게 사용할 수 있습니다.