Groovy JsonBuilder вызов методов для добавления информации

Следующий код работает нормально

def json = new JsonBuilder()

json {
  writeNumbers(delegate, "myNumbers")
}

println json.toPrettyString()

def writeNumbers(json, name) {
  json."$name" {
      "w" 32
      "h" 32
  }
}

Но как только я перемещаю или добавляю вызов writeNumbers внутри другой "области видимости", я получаю исключение stackru; просто так

def json = new JsonBuilder()

json {
  scopes {
    writeNumbers(delegate, "myNumbers")
  }
}

println json.toPrettyString()

def writeNumbers(json, name) {
  json."$name" {
      "w" 32
      "h" 32
  }
}

Результат:

Caught: java.lang.StackruError
java.lang.StackruError

Почему это происходит и как я могу обойти это? Спасибо

1 ответ

Решение

Я думаю, что это вызвано основной ошибкой, что метод writeNumbers неизвестно при построении цепи замыканий.

Вам нужно изменить:

writeNumbers(delegate, "myNumbers")

в

this.writeNumbers(delegate, "myNumbers")

И это будет работать... Интересно, что это похоже на ошибку... Я выясню, получу ли я немного свободного времени;-)

Изменить: нашел этот предыдущий вопрос, который показывает то же самое

Другие вопросы по тегам