지도의 주요 부분에 변수를 사용하는 방법


109

내가 가지고 있다고하자

def A = "abc"
def X = "xyz"

Map대신 where를 어떻게 생성합니까?

def map = [A:1, X:2]

대신 쓰기와 동등한 것을 얻습니다.

def map = [abc:1, xyz:2]

하지만 변수 AX키를 사용할 수 있습니까?

추신 :지도의 가치 부분에 대해서도 같은 질문입니다.

답변:


168

이것을 사용하십시오 :

def map = [(A):1, (X):2]

값 부분의 경우 자동 "텍스트를 문자열로 변환"이 발생하지 않기 때문에 더 쉽습니다.

def map = [keyA:A, keyX:X]

11
참조를 제공하기 위해 : 지도 문서에 다음과 같이 표시됩니다.To use the value of a String as the key value of a map, simply surround the variable with parenthesis.
mmigdol

1
@mmigdol이 인용에서이다 오래된 그루비 문서 에서 최신 문서 는 다음과 같습니다 : Map keys are strings by default: [a:1] is equivalent to ['a':1]. This can be confusing if you define a variable named a and that you want the value of to be the key in your map. If this is the case, then you must escape >the key by adding parenthesis..
마이클 베른 하르트

그래서 def map = [(A) : 1, (X) : 2]의 차이는 무엇입니까? 그리고 def map = [ "$ A": 1, (X) : 2] 있다면?
TriMix

2
@TriMix의 차이점은 Strings vs GStrings입니다. 를 사용 [(A):1, (X):2]하면 변수가 String으로 이스케이프됩니다. 를 사용 ["$A":1, (X):2]하면 "$A"은 보간 된 문자열로 GString이됩니다. 지도는 GString이 제공하지 않는 키가 변경 불가능할 것으로 예상합니다.
조쉬 리옹

20

에 또한 요아킴의 대답 , 기존 맵에 항목을 추가하고 싶은 키가 변수 경우, 사용 :

def map = [:]
def A = 'abc'
map[A] = 2

사용하는 경우 :

map.A = 2

범위에 A라는 변수가 있더라도 리터럴 문자열 'A'를 키로 사용한다고 가정합니다.

최신 정보

@tim_yates가 주석에서 지적했듯이 다음을 사용하면 주요 변수도 해결됩니다.

map."$A" = 2

개인적으로 는 변수 이름이 변경되면 [A]리팩토링 도구가 "$A"참조를 놓칠 수 있기 때문에 구문 을 사용하는 것을 선호합니다.


6
map."$A"구문은 당신과 함께 널 안전지도 네비게이션의 혜택을 제공합니다 map?."$A"사용 달성 할 수 AFAIK, map[A]구문
Ghiro
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.