Можешь объяснить, как система environment в SwiftUI позволяет передавать данные через иерархию представлений, и описать ключевые различия между использованием environment injection и передачей данных через инициализаторы представлений? — ДейлиПреп