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