StringTemplate v3에서 제공된 해시 맵 조회를 수행하는 대신 제공된 키에서 함수를 호출하고 함수 결과를 반환하는 사용자 정의 Java HashMap 구현이있었습니다. 이 HashMap의 인스턴스를 특성으로 stringtemplate에 추가합니다. 이렇게하면 StringTemplate에 사용자 정의 함수를 작성할 수 있습니다. +는 제안 된 변경이 V4에서 더 이상 가능하지 않고, 함께stringtemplate v4에서 사용자 정의 함수 구현
$myfunc.("argument")$
및
$somearray:{ v |
$myfunc.("value: " + v)$
}$
이 myfunc의 HashMap를 여기에 입력 한 문자열
문자열 연결의 핵심을 얻을 것입니다 : 우리는 같은 부를 것이다 익명 템플릿에 "value"+ v를 만드는 것입니다 :
$somearray:{ v |
$myfunc.({value: $v$})$
}$
이 경우 ST 개체는 다음과 같습니다. HashMap에 전달되고, 보통 render()를 호출하여 보통 얻을 텍스트를 생성 할 수 있지만 'v'속성은 더 이상 주변 범위에서 전달되지 않습니다. 어떻게하면 ST 객체가 주변 범위 (ST)를 찾을 수 있습니까? 그래서 속성을 복사하여이 작업을 할 수 있습니까 ??
정말 우리가 큰 코드베이스를 가지고 있기 때문에
$somearray:{ v |
$myfunc.((v:{ v | value: $v$}))$
}$
에 코드를 변경하지 않으며, 이것은 매우 파괴적인 변화이다.
내가 원하는 것을 얻을 수있는 다른 방법이 있습니까? 문자열 인자를 가진 Java 함수를 호출하려고하고 문자열 인자가 둘러싸는 범위의 속성에 접근 할 수있는 표현식 인 템플릿에 값을 반환하도록하고 있습니다.