내 .stg 파일에는 두 개의 템플릿이 있으며이 두 템플릿은 모두 다중 값 HashMap에 적용됩니다. HashMap은 삽입 된 개체로 사용됩니다.Stringtemplate : HashMap이 사용하는 다중 값 속성에 대한 템플릿을 적용해도 괜찮습니까?
그리고 저는 HashMap 인스턴스를 여러 번 주입 할 수 있어야합니다.
다른 서식 파일로 전환하면 ANTLR이 인 것처럼 보입니다. 두 번째 HashMap을 List multipul 개체로 간주하고 null 값으로 간주합니다. 내 · G 파일의
Part of my .stg file shows as follows:
tpl_hash(BAR, FOO) ::= <<
<FOO:foo(); separator="\n">
<BAR:bar(); separator="\n">
>>
foo(nn) ::= <<
foo: <nn.name; null="NULL"> . <nn.national; null="NULL">
>>
bar(mm) ::= <<
bar: <mm.name> @ <mm.national>
>>
파트 보여줍니다
HashMap hm = new HashMap();
hm.put("name", $name.text);
hm.put("national", "German");
tpl_hash.add("FOO",new HashMap(hm));
HashMap hm2 = new HashMap();
hm2.put("name", $name.text);
hm2.put("national", "German");
tpl_hash.add("BAR",new HashMap(hm2));
내가 기대하는 결과는 다음과 같습니다
bar: Kant @ German
foo: Russell @ England
하지만, 내가 가지고 : 우리는 FOO와 BAR를 교체하는 경우, 그대로, 동일한 템플릿으로 FOO와 BAR를 유지, 출력은 다음과 같은 권리
foo: NULL . NULL
foo: NULL . NULL
bar: @
bar: @
. "ST는 에 org.stringtemplate.v4.ST을 (문자열 이름, 개체 값)를 추가 동기화"
bar: Russell @ German
bar: Russell @ German
문서에서
는 말했다 : 당신이 목록에 보낼 경우
이"주입 한 후 단일 값 요소 인 add() 은 원래 목록을 복사하고 새 값을 추가합니다. "
HashMap은 어떤가요? StringTemplate은 HashMap, 키/값 쌍인 을 의도적으로 액세스하고 목록으로 간주하고 실수로 삽입 된 다중 값을 고려합니까?
ANTLR에 태그를 추가하고 언급했지만 ANTLR에 대한 질문 (StringTemplate 만)이 표시되지 않습니다. 그 때문에 ANTLR 태그를 제거하고 "ANTLR"에 대한 언급을 "StringTemplate"으로 바꿨습니다. 내가 틀렸다면 원래 질문으로 되돌릴 수 있지만 문제를 편집하여 ANTLR 문제가 무엇인지 명확히하십시오. –