Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2017, 03:24   #41
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
хотя можно было не применять массив в принципе
Если вы не объявляете массив явно - то где то он создаётся за вас, в том или ином виде присутствует набор данных; поправьте меня, если я не прав, желательно с аргументами ... Вот мой аргумент: вы так или иначе получаете набор упорядоченных данных, чем по определению является массив в том или ином виде, даже абстрактно на уровне представления данных.
Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
если надо изменить порядок, то давно уже придумали LINQ
Так не интересно, когда уже за меня придумали. И это опять же вопрос не "продакшина", а личного исследования; мы уже как то дискутировали на эту тему.

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
не используй аргументов для передачи состояния, только глобальные переменные
Повторюсь: использую глобалку для "передачи" состояния в целях экономии памяти, на личном интересе.

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
сайты это и парсинг
Знаем, плавали ... Когда то руками парсил HTML. Было прикольно, и понравилось; по возможности и необходимости повторю.

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
вы ООП с костылями не путайте
Костылями можно обзавестись где угодно, и назвать костылём можно всё что угодно. Это уже лишь вопрос интерпретации.
Есть интересное выражение на эту тему: "костыли - временное решение; а нет ничего более постоянного, чем временное". Особенно проблемы. По аналогии с костылями. Об этом тоже можно долго общаться.

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
он принимает последовательность как есть
Так а какой тогда смысл в этом операторе, если нет гибкости ? Напейсал прямую индексацию, если ничего лишнего не надо; вот и получается по моей логике - foreach не нужен, так как его возможности полностью перекрываются другими типами циклов. Поправьте меня, если я не прав.

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
.Skip
И сколько раз мне нужно его вызвать, что бы начать обработку скажем с элемента под номером 10 ? 20 ? 1000 ?
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 12.02.2017, 03:30   #42
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Если вы не объявляете массив явно - то где то он создаётся за вас, в том или ином виде присутствует набор данных; поправьте меня, если я не прав, желательно с аргументами ... Вот мой аргумент: вы так или иначе получаете набор упорядоченных данных, чем по определению является массив в том или ином виде, даже абстрактно на уровне представления данных.
вы вырвали из контекста задачи.
чтение списка файлов, это по сути как чтение файла.
в вашем случае за вас создают массив, а не наоборот.
Цитата:
Так а какой тогда смысл в этом операторе, если нет гибкости ? Напейсал прямую индексацию, если ничего лишнего не надо; вот и получается по моей логике - foreach не нужен, так как его возможности полностью перекрываются другими типами циклов. Поправьте меня, если я не прав.
а он и не создан для этой гибкости.
он строго от и до.
вы мои примеры проигнорировали да?
HashSet, Dictionary, генераторы, чтение из внешнего источника. тут нет массива, нет индексов.
и нет, его возможности не перекрываются.
for может перекрыть его только для List и [], не более(некоторые типы данных тоже можно обернуть в индекс, но они тогда теряют эффективность, например LinkedList)

Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
И сколько раз мне нужно его вызвать, что бы начать обработку скажем с элемента под номером 10 ? 20 ? 1000 ?
один.
Цитата:
в том или ином виде присутствует набор данных;
ага, на диске.
Цитата:
Так не интересно, когда уже за меня придумали
C# тоже за вас придумали.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 12.02.2017 в 03:37.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.02.2017, 03:50   #43
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
и нет, его возможности не перекрываются.
for может перекрыть его только для List и []
Я не про for, я в целом о операторах циклической обработки. Да кстати for можно использовать и не в целях индексации; индексация - это лишь "бонус"; условие выхода может быть любое, ровно как и операция перед новой итерацией.
Можно написать for ( ; ; ) { } , и это будет тоже самое, что и while (true) { } .
Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
ага, на диске.
На диске - опять же, аппаратный массив битов. Который вертится на HDD, или расположен в ячейках на флешках/SSD и так далее.

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
C# тоже за вас придумали.
В данном случае C# - уже готовое средство разработки; мы говорим о методах реализации в рамках этих средств.
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 12.02.2017 в 03:55.
OmegaBerkut вне форума Ответить с цитированием
Старый 12.02.2017, 04:08   #44
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Я не про for, я в целом о операторах циклической обработки. Да кстати for можно использовать и не в целях индексации; индексация - это лишь "бонус"; условие выхода может быть любое, ровно как и операция перед новой итерацией.
Можно написать for ( ; ; ) { } , и это будет тоже самое, что и while (true) { } .
спасибо, я в курсе.
можно-то можно, но foreach конкретно работает с перечислениями, он заменяет работу одного варианта for, убирает всю ручную работу и возможные касты и тп, плюс не забывает подчищать если нужно.(IDisposable)
в С++ так же есть вариант for специально для перечислений(итераторы)
напишите аналог foreach для HashSet и поймете зачем оно надо, это типовая задача, потому и принята многими языками.
Цитата:
На диске - опять же, аппаратный массив битов. Который вертится на HDD, или расположен в ячейках на флешках/SSD и так далее.
ваш КО.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.02.2017, 04:21   #45
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
убирает всю ручную работу
Вот за это я и презираю этот оператор. Вопрос предпочтений ?
Или возможность где то накосячить с индексацией ? Лень за собой подчищать память самостоятельно ? Что же тогда будет, когда в C++ вернётесь ... Но это вроде как ваше уже дело.
По той же причине не использую инструкцию var вместо объявления типа ... Не интересно так ...
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 12.02.2017, 04:45   #46
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Вот за это я и презираю этот оператор. Вопрос предпочтений ?
for за вас тоже не мало делает, как и while, что-то не вижу чтоб вы применяли goto и if.
Цитата:
Или возможность где то накосячить с индексацией ?
в последовательностях ее нет.(еще раз HashSet упомяну, да и прочее, вы перестаньте упорно на массивы передергивать)
Цитата:
Лень за собой подчищать память самостоятельно ?
дело не в лени(и да, необходимость подчищать там редка на практике).
а в типовости операции.
Цитата:
Что же тогда будет, когда в C++ вернётесь ... Но это вроде как ваше уже дело.
я работаю не на одном языке, так что аргументы возвращения оставьте при себе.
и да, для справки, аналог foreach есть и у плюсов.
ровно так же убирает типовую операцию.
Цитата:
По той же причине не использую инструкцию var вместо объявления типа ... Не интересно так ...
учитывая что она не делает вообще ничего с кодом(ни одной инструкции он не добавляет), это уже чисто не любить себя, впрочем var абсолютно иная история.

и да, 80% нагрузки при работе с ФС, это печалька.
вообще давно пора уйти отсюда.
не вижу смысла обсуждать что-то с тем у кого аргументы из разряда
"я так хочу", "оно что-то за меня делает, о ужас" и тп.
вам привели кучу примеров и аргументов, вам же пофиг, ну уперлись рогом, пожалуйста.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 12.02.2017 в 04:49.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.02.2017, 05:01   #47
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
что-то не вижу чтоб вы применяли goto и if
Как if, так и goto применяю довольно часто. Те вещи, которые можно сделать "уже существующими методами" я часто реализую "собственными" костылями силами, просто потому что мне так нравится.
Вы это осуждаете (и я не возражаю, имеете право).
Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
вообще давно пора уйти отсюда.
не вижу смысла обсуждать что-то с тем у кого аргументы из разряда
"я так хочу", "оно что-то за меня делает, о ужас" и тп.
вам привели кучу примеров и аргументов, вам же пофиг, ну уперлись рогом, пожалуйста.
Никто никуда не упирался ... Я лишь общаюсь, учусь, получаю информацию.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 13.02.2017, 08:55   #48
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

OmegaBerkut, меня удивляет, что с таким отношением к программированию вы остановились на шарпе. Мне кажется, что С++ вам больше подходит идеологически.
pu4koff вне форума Ответить с цитированием
Старый 13.02.2017, 09:43   #49
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию

Мне больше нравится нерекурсивный обход. А то кто его знает когда там стэк закончится.

Код:
class Program
{
	static void Main(string[] args)
	{
		using (var f = File.CreateText("report.txt"))
			foreach (var line in GenerateReport(@"C:\"))
				f.WriteLine(line);
	}

	private static IEnumerable<string> GenerateReport(string path)
	{
		var dirs = new Stack<Tuple<int,string>>();
		dirs.Push(new Tuple<int, string>(0, path));

		while (dirs.Any())
		{
			var dir = dirs.Pop();

			yield return string.Concat(new String('\t', dir.Item1), "<DIR> ", dir.Item2);

			var subdirs = SafeGetDirs(dir.Item2).Reverse().ToList();
			if (subdirs.Any())
			{
				foreach (var d in subdirs)
					dirs.Push(new Tuple<int, string>(dir.Item1 + 1, d));
				continue;
			}

			foreach (var f in SafeGetFiles(dir.Item2))
				yield return string.Concat(new String('\t', dir.Item1 + 1), f);
		}
	}

	private static IList<string> SafeGetDirs(string path)
	{
		try
		{
			return Directory.EnumerateDirectories(path).ToList();
		}
		catch
		{
			return new List<string>();
		}
	}

	private static IList<string> SafeGetFiles(string path)
	{
		try
		{
			return Directory.EnumerateFiles(path).ToList();
		}
		catch
		{
			return new List<string>();
		}
	}
}
the_deer_one вне форума Ответить с цитированием
Старый 13.02.2017, 09:57   #50
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
OmegaBerkut, меня удивляет, что с таким отношением к программированию вы остановились на шарпе. Мне кажется, что С++ вам больше подходит идеологически.
Мне шарп больше по душе синтаксически ... Конструкции проще писать. А так - я прекрасно понимаю разницу.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
узнать есть ли в массиве одинаковые числа lanabanana Общие вопросы Delphi 12 23.02.2016 15:42
С какой стороны функция LORDIF Общие вопросы C/C++ 1 28.05.2012 22:38
ListView как узнать есть ли строки? Кольша Мультимедиа в Delphi 4 27.08.2011 14:17
Стороны света ≈ стороны монитора Alex Cones Свободное общение 21 26.08.2010 17:15