В прошлом посте мы остановились на том, что мы умеем добавлять массив входных погодных данных, а точнее данные "Время + температура", слегка попробовали использовать **Behavior** и разобрались с концептами.
Пришло время делать что-то полезное, ведь пока все, что мы реализовали, можно было реализовать на любом другом языке, за исключением прикольного синтаксиса.
Первым делом, введем ограничения на время. Сейчас мы ограничим его, чтобы часы были в пределе 0-24, а минуты 0-60, иначе будет выдаваться ошибка компиляции.
**Constraints** это аспект языка, который отвечает за валидность реализации концепта. В нашем случае нам нужно ограничить _property_ hours и minutes, поэтому мы создаем _Constraints_ аспект концепта Time.
![image][1]
Здесь мы видим 3 пункта, которые отвечают за структуру AST.
* can be child: получаем на вход данные об узле, родительском узле, дочернем и все, что только можно и решаем, может ли реализация концепта в данном контексте быть дочерней или нет
* can be parent: то же самое, что и с child, только проверка на возможность быть родительским узлом
* can be ancestor: все то же самое, что с parent, но более вложенно: в данном случае мы можем идти как угодно выше по AST, дословно — может ли узел быть предком[Читать дальше →][2]
[1]:
https://habrastorage.org/getpro/habr/post_images/3c2/5b9/837/3c25b9837a88652cbd7bd39b6f8ea9f1.png
[2]:
https://habrahabr.ru/post/334376/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut