2017-05-08 5 views
1

다음 코드가 있으며 문자열 보간을 사용하여 중첩 된 맵 값에 액세스하려고합니다. 그러나 특정 값이 아닌 전체 변수를 반환합니다.문자열 보간법을 사용하여 다트 랭의 중첩 된지도에있는 값에 액세스하십시오.

Map<String, Map<String, String>> questionBank = { 
    "1": { 
    "question": "What is the capital of Canada?", 
    "ans1": "Toronto", 
    "ans2": "Montreal", 
    "ans3": "Ottawa", 
    "ans4": "Vancouver" 
    }, 
    "2": { 
    "question": "What is the capital of Britain?", 
    "ans1": "London", 
    "ans2": "Manchester", 
    "ans3": "Newcastle", 
    "ans4": "Edinburgh" 
    } 
}; 

void main() { 
    print('Question: $questionBank[1][question]'); 
} 

어떻게 해결할 수 있습니까? 모든 통찰력에 감사드립니다.

답변

5

분명히 변수가 아니라 표현식으로 평가되므로 괄호로 묶어야합니다.

print('Question: ${questionBank["1"]["question"]}'); 
+0

수정. 보간법은'$ identifier' (식별자는'$'문자를 포함 할 수 없습니다) 또는 임의의 표현식이 될 수있는'$ {expression}'일 수 있습니다. – lrn

+0

또한 식별자에'$ '가 포함되어 있으면'$ identifier'가 작동하지 않습니다. 이 경우 문자열 보간은 두 개의 별도 식별자로 읽으려고 시도합니다.' "$ foo $ bar"'는 "$ {foo} $ {bar}"'로 해석됩니다. 변수의 이름이'foo $ bar' 인 경우에는 "$ {foo $ bar}" "라고 표기해야합니다. –