Информация об изменениях

Сообщение Re[9]: Nemerle через 5 лет - выстрелит или скончается? от 03.10.2014 2:27

Изменено 03.10.2014 2:29 bazis1

Здравствуйте, DarthSidius, Вы писали:

DS>Здравствуйте, bazis1, Вы писали:


B>>>>Если не надо читать весь файл сразу, то можно вместо ReadAllLines сделать свою версию на yield return. Издержки на создание итераторов все равно будут минимальными по сравнению с disk IO.

DS>>>Чиать надо построчно — реализация аналогична IDataReader.
DS>>>Ну а теперь приведи весь код с созданием итератора. И мы посмотрим на твою одну строку
B>>Ну тогда надо сравнивать код реализации итератора с кодом вашего вундер-компилятора

DS>Съехал с темы. Слив засчитан.

DS>Значит одной строчкой итератор не создать.
Ага, нужно ВНЕЗАПНО аж целых 3:
        public static IEnumerable<string> ReadLineByLine(string fn)
        {
            using (var sr = File.OpenText(fn))
                while (!sr.EndOfStream)
                    yield return sr.ReadLine();
        }

Dispose() по выходу из foreach() вызывается, если что.
Re[9]: Nemerle через 5 лет - выстрелит или скончается?
Здравствуйте, DarthSidius, Вы писали:

DS>Здравствуйте, bazis1, Вы писали:


B>>>>Если не надо читать весь файл сразу, то можно вместо ReadAllLines сделать свою версию на yield return. Издержки на создание итераторов все равно будут минимальными по сравнению с disk IO.

DS>>>Чиать надо построчно — реализация аналогична IDataReader.
DS>>>Ну а теперь приведи весь код с созданием итератора. И мы посмотрим на твою одну строку
B>>Ну тогда надо сравнивать код реализации итератора с кодом вашего вундер-компилятора

DS>Съехал с темы. Слив засчитан.

DS>Значит одной строчкой итератор не создать.
Ага, нужно ВНЕЗАПНО аж целых 3:
        public static IEnumerable<string> ReadLineByLine(string fn)
        {
            using (var sr = File.OpenText(fn))
                while (!sr.EndOfStream)
                    yield return sr.ReadLine();
        }

Dispose() по выходу из foreach() вызывается, если что. Причем, этот код пищется один раз, запихивается в какой-нибудь внутренний AcmeUtilityLib и вызывается не сложнее File.ReadAllLines().