2017-11-16 1 views
0
나는이 오류가 오전

:이 코드 라인오류 불법 시작

error: illegal start of simple expression def process_alcs(lines: List[String]) : List[(String, Double)] = for (line <- lines) yield (val a = line.split(",")) (a[0],a[4].toDouble)

을 :

def process_alcs(lines: List[String]) : List[(String, Double)] = 
    for (line <- lines) yield (val a = line.split(",")) (a[0],a[4].toDouble) 

내가 처음이 괄호 불일치라고 생각하지만 확인 100 배

답변

1

시도

def process_alcs(lines: List[String]) : List[(String, Double)] = for (line <- lines) yield { 
    val a = line.split(",") 
    (a(0),a(4).toDouble) 
} 

기본적으로 다중 회선 평가를 수행하고 있습니다. 따라서 코드를 대신 {으로 캡슐화해야합니다. 또한 두 진술은 하나의 {} 쌍으로 캡슐화해야합니다.

또한 스칼라의 배열 구성원은 ()이 아니고 []이 아니라 액세스하여 액세스합니다. 따라서 [0] 대신에 (0)을 사용하려고합니다.

별도의 메모에서 다른 사람이 오늘 물었던 다른 질문과 관련이있는 것 같습니다. 어떤 경우에는 4 번째 열의 값을 두 배로 변환하려고합니다. . 네 번째 열에 액세스하려면 (3)을 사용하는 것이 좋습니다. 이 도움이 경우

, 코드가되고,

def process_alcs(lines: List[String]) : List[(String, Double)] = for (line <- lines) yield { 
    val a = line.split(",") 
    (a(0), a(3).toDouble) 
} 

희망. 당신은 추가 질문 :

편집이 있으면 알려 주시기 :

def process_as_map(lines: List[String]) : Map[String, Double] = { 
    val results: List[(String, Double)] = for (line <- lines) yield { 
    val a = line.split(",") 
    (a(0), a(3).toDouble) 
    } 
    results.toMap 
} 

는 설명 주석을 참조하십시오,지도로 변환하기를, 당신의 코드

+0

I에 따라 같은 불통 이유에 그것이 효과가 있다고 생각하고, 대단히 감사합니다.하지만 또 다른 문제가 있습니다. 내 다음 함수에서 값을지도로 밀어 넣으려고 노력하고 있습니다. def process_pops (lines : List [String]) : Map [String, Long] = for (line <- lines) yield { val b = line.split (",") (b (0) -> b (1) .toLong) .toMap }이 작동하지 않습니다. 나는 이번 주에 스칼라를 시작 '데프 process_pops (라인 : 목록 [문자열]) : 도움이 될 수 있습니다와 같은 외부 .toMap 이동 시간 –

+0

주셔서 감사합니다 (목록 [문자열 : 맵 [문자열, 더블] = { 발 결과를 용 = 더블) (라인 <- 선)을 수득 { 발을 A = line.split (",") (a (0), A (3) .toDouble) } results.toMap }' 빌드 한 각각의 튜플에 대해 Map toMap을 호출하면 각 행을 단일 항목으로 맵으로 변환합니다. 그러므로, 당신은 List [Map [String, Double]]을 남겨 둡니다. 대신 당신이 먼저 전체 '목록 [(문자열, 더블)]'건설로 전환 한 다음이 일 – rmathews7

+0

를 예상대로 작동한다고에'toMap'를 호출하는 경우 시간 –