S>Это вы сходу написали или же сталкивались и написали по опыту?
по опыту я знаю о существовании метода string.Join. Хотя ИМХО методы столь базового класса как string имеет смысл просмотреть вообще каждому кто пишет под .NET
S>Зарабатываете более $2500?
Нет.
Re[3]: Понятна ли эта строчка кода? Как лучше записать?
S>Это вы сходу написали или же сталкивались и написали по опыту? Зарабатываете более $2500?
А зарплата то как связана с вопросом?
Вообще string.Join, есть даже в яваскрипте (array.join), и питоне. Он в тыщупицот раз легче читается, чем, Aggregate, да и работает скорее всего быстрее. В яваскрипте и питоне вообще прием с array.join("") это такой почти стандартный аналог StringBuilder. На этой основе можно даже сделать простенький движок шаблонов, который будет биндить значения на предварительно посчитанные индексы. При чем, в JS — это один из самых простых и быстрых способов (ну конечно, массив из миллиона элементов делать не стоит).
В реальном, библиотечном коде, я бы еще избавился от интерполяции строк, т.к. она использует, текущую культуру. Для конкатенации строк, это должно быть не важно, а для других типов может быть важно — легче иметь единообразный стиль, чем там так, а тут эдак. Да и наличие квадратных скобок намекает на генерацию какого-то синтаксиса, а он пр всей видимости требует экранировать строки. Таким образом и тот и тот вариант выродится в отдельный конструкт, который всем этим занимается.
Re[2]: Понятна ли эта строчка кода? Как лучше записать?
Здравствуйте, Jack128, Вы писали:
J>по опыту я знаю о существовании метода string.Join
А нет опыта сравнения производительности string.Join() и Agregate<string>()?
Сам специально не искал. Мне кажется, первый должен быть более заточен.
Re[2]: Понятна ли эта строчка кода? Как лучше записать?
S>Все гениальное — просто. Но не хотелось тащить доп. библиотеку, не люблю когда ради 1 строчки целая либа.
Вот только все остальные приведённые тут варианты забыли заэкранировать спецсимволы в значениях, добавив не только прикольные баги, но и вероятно дыру в безопасности.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[4]: Понятна ли эта строчка кода? Как лучше записать?
Здравствуйте, Jack128, Вы писали:
S>>Это вы сходу написали или же сталкивались и написали по опыту? J>по опыту я знаю о существовании метода string.Join.
Черт, изучал C# в 2008 по книге, и видать, пропустил этот метод, давно написал уже аналогичный метод в библиотеке утилит, которую пихаю во все проекты.
Как говорится, век живи, век учись.
Re: Понятна ли эта строчка кода? Как лучше записать?
S>string[] clientDataKeyNames = new string[] {"a", "b"};
S>var dataKeyValues =
S> clientDataKeyNames.Skip(1).Aggregate(
S> clientDataKeyNames.Any() ? $"[\"{clientDataKeyNames.First()}\"" : "[",
S> (a, next) => a + $",\"{next}\"", a => a + "]");
S>
Первые три этапа обучения функциональному программированию:
1) научиться использовать рекурсию
2) научиться не использовать рекурсию и использовать свертку
3) научиться не использовать свертку
Re: Понятна ли эта строчка кода? Как лучше записать?
Здравствуйте, Max Mustermann, Вы писали:
K>>>Можно ещё проще: MM>·>Только не работает для пустой коллекции. MM>Работает.
Если "работает" понимать "не падает", то да. Но для пустой коллекции оно выдаст [""] вместо ожидаемого в json []. Весёлой отладки!
MM>А вот Aggregate<string> действительно падает на пустой коллекции.
Уж лучше падать, чем выдавать что попало.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[2]: Понятна ли эта строчка кода? Как лучше записать?