Groovy에서 수행하려는 매우 간단한 작업이 있지만 작동하지 않는 것 같습니다. groovy에서 맵 객체를 반복하고 키와 값을 인쇄하려고하지만이 코드가 작동하지 않습니다.
// A simple map
def map = [
iPhone : 'iWebOS',
Android: '2.3.3',
Nokia : 'Symbian',
Windows: 'WM8'
]
// Print the values
for (s in map) {
println s + ": " + map[s]
}
다음과 같이 출력을 얻으려고합니다.
iPhone: iWebOS
Android: 2.3.3
Nokia: Symbian
Windows: WM8
누군가이 작업을 수행하는 방법에 대해 자세히 설명해 주시겠습니까?
답변
클로저로 매우 간단합니다.
def map = [
'iPhone':'iWebOS',
'Android':'2.3.3',
'Nokia':'Symbian',
'Windows':'WM8'
]
map.each{ k, v -> println "${k}:${v}" }
답변
또는 Groovy Docs에for
표시된 것처럼 루프를 사용할 수 있습니다 .
def map = ['a':1, 'b':2, 'c':3]
for ( e in map ) {
print "key = ${e.key}, value = ${e.value}"
}
/*
Result:
key = a, value = 1
key = b, value = 2
key = c, value = 3
*/
클로저 for
와 반대로 루프 를 사용하면 얻을 수있는 이점 중 하나 는 each
클로닝 내부에서 중단 점에 도달 할 수 없기 때문에 디버깅하기가 더 쉽다는 것입니다 each
(Netbeans를 사용 하는 경우).
답변
for 루프를 사용할 때 s의 값은 Map.Entry 요소입니다. 이는 s.key에서 키와 s.value에서 값을 가져올 수 있음을 의미합니다.
답변
다른 옵션 :
def map = ['a':1, 'b':2, 'c':3]
map.each{
println it.key +" "+ it.value
}