Эти foreach
для итерации по наборам, которые реализуют IEnumerable
. Это делает это путем вызова GetEnumerator
на наборе, который возвратится Enumerator
.
Этот Перечислитель имеет метод и свойство:
Current
возвраты объект, что Перечислитель в настоящее время включен, MoveNext
обновления Current
к следующему объекту.
понятие индекса является внешним к понятию перечисления и не может быть сделано.
Из-за этого, большинство наборов в состоянии быть пересеченным с помощью индексатора и для конструкции цикла.
я значительно предпочитаю использовать для цикла в этой ситуации по сравнению с отслеживанием индекса с локальной переменной.
Я провел несколько экспериментов и обнаружил, что для такого ограничения, как:
class User {
String password
static constraints = {
password(size:5..15)
}
}
, значения заполнителей следующие:
0. Name of the class (User)
1. Name of the property (password)
2. Value of the property
3. First constraint parameter (5)
4. Second constraint parameter (15)
5. etc.
Вы правы, я тоже не нашел никакой документации по этому поводу. Лучшая ставка? Измените свои сообщения на что-то вроде:
User.password.size=0:{0}, 1:{1}, 2:{2}, etc...
и посмотрите, что вы получите по каждому из тех, которые вас интересуют. Если вы разместите эту информацию на доске сообщений Nabble в Grails, я уверен, что она найдет место в документации.
Удачи.