Как избежать оценки GString - PullRequest
3 голосов
/ 27 апреля 2011

Я работаю над расширением устаревшей системы сценариев с использованием groovy.Исходные сценарии "java-like", поэтому он в основном разбирается как отличный сценарий с небольшой предварительной обработкой.

Я использую invokeMethod () и missingMethod () для прохода через унаследованный код, что позволяет мне использовать замыкания и другие отличные функции для улучшения сценариев.Однако оригинальный скрипт использует строки типа «$ foo» для ссылки на переменные.Когда унаследованный метод перехватывается с помощью missingMethod (), мне нужно, чтобы он не оценивал эту строку как GString, а просто выводил ее дословно.Возможно ли это каким-либо образом?

1 Ответ

4 голосов
/ 17 мая 2011

Есть два способа избежать $ foo:

  1. экранируйте '$' как '\ $'
  2. использовать 'вместо' в качестве разделителя строк

пример:

 def test = "bad"
 def s0 = "$test"
 def s1 = "\$test"
 assert s1 != s0
 def s2 = '$test'
 assert s2 == s1
 println s0
 println s1
 println s2

Так что я думаю, что вы должны использовать свой препроцессор, чтобы избежать ваших строк

...