Здравствуйте, Shmj, Вы писали:
S>Ведь удобно то и однозначность, как и со строками, вполне достигается.
С какими однозначино с теми исспользуется, напр. в делегатах. В каких не однозначно, т.е. не понятно в какой последовательности должны идти эллементы и как должна выделятся память для нового списка, в тех не исспользуется.
Підтримати Україну у боротьбі з країною-терористом.
Здравствуйте, #John, Вы писали:
J>С какими однозначино с теми исспользуется, напр. в делегатах. В каких не однозначно, т.е. не понятно в какой последовательности должны идти эллементы и как должна выделятся память для нового списка, в тех не исспользуется.
Почему не понятно? В Pythone мне пришлось столкнуться — там сразу понятно стало что делает оператор + с двумя списками. А что, много вариантов? Естественно создается 3 список и последовательно в него копируют сначала левый потом правый Какие еще варианты? Скопировать наоборот, сначала правый потом левый? Или не выделять память?
Re[3]: Почему не используется оператор + для списков и пр.?
Здравствуйте, Shmj, Вы писали:
S>Здравствуйте, #John, Вы писали:
J>>С какими однозначино с теми исспользуется, напр. в делегатах. В каких не однозначно, т.е. не понятно в какой последовательности должны идти эллементы и как должна выделятся память для нового списка, в тех не исспользуется.
S>Почему не понятно? В Pythone мне пришлось столкнуться — там сразу понятно стало что делает оператор + с двумя списками. А что, много вариантов? Естественно создается 3 список и последовательно в него копируют сначала левый потом правый Какие еще варианты?
В Pythone, наверно, нет коллекций/списков: Queue,Stack,LinkedList,Dictionary,Hashtable,SortedList,Partitioner и т.д. для которых такое повидение "слияние списков" не подходит.
Підтримати Україну у боротьбі з країною-терористом.
Здравствуйте, #John, Вы писали:
J>В Pythone, наверно, нет коллекций/списков: Queue,Stack,LinkedList,Dictionary,Hashtable,SortedList,Partitioner и т.д. для которых такое повидение "слияние списков" не подходит.
Для Queue — вполне очевидно — создаете новую Queue и добавляете сначала элементы из левого потом из правой очереди.
Давайте один пример разберем, для которого явно не понятно что делает оператор +. Какой из приведенных вами наиболее ярко демонстрирует неопределенность + -оператора?
Re: Почему не используется оператор + для списков и пр.?
Здравствуйте, Shmj, Вы писали:
S>Давайте один пример разберем, для которого явно не понятно что делает оператор +. Какой из приведенных вами наиболее ярко демонстрирует неопределенность + -оператора?
Пусть будет два списка
var x = new Dictionary<int, string>(){
[1]="aaaaaa",
[2]="bbbbbb"
};
var y = new Dictionary<int, string>(){
[1]="*******",
[2]="bbbbbb"
};
Как должен выглядеть новый список после слияния?
Підтримати Україну у боротьбі з країною-терористом.
Здравствуйте, #John, Вы писали:
J>Пусть будет два списка J>
J> var x = new Dictionary<int, string>(){
J> [1]="aaaaaa",
J> [2]="bbbbbb"
J> };
J> var y = new Dictionary<int, string>(){
J> [1]="*******",
J> [2]="bbbbbb"
J> };
J>
J>Как должен выглядеть новый список после слияния?
var z = new Dictionary<int, string>(){
[1]="*a*a*a*a*a*a*",
[2]="bbbbbb"
};
Re: Почему не используется оператор + для списков и пр.?
Здравствуйте, Shmj, Вы писали:
S>Ведь удобно то и однозначность, как и со строками, вполне достигается.
Контрвопрос: а с какого перепоя плюс должен там использоваться?! Неужели .Join тебе так впадлу писать, что тебе подавай операторы? А что делать со следующим нытиком, требующим "минус" для списков? А декартово умножение? Ты влезаешь в такую тему, где слабо шаришь. Нужны "интересные" операторы — велкам ту Perl! Вот там десять раз почешешь репу, какой из символов (или ряд символов) заюзать, чтобы получить правильный результат. Пиши на Перл, серьёзно — удивишься, насколько лаконично можно выражать свои намерения.
Re[6]: Почему не используется оператор + для списков и пр.?
Здравствуйте, #John, Вы писали:
J>Пусть будет два списка J>
J> var x = new Dictionary<int, string>(){
J> [1]="aaaaaa",
J> [2]="bbbbbb"
J> };
J> var y = new Dictionary<int, string>(){
J> [1]="*******",
J> [2]="bbbbbb"
J> };
J>
J>Как должен выглядеть новый список после слияния?
Здравствуйте, Kolesiki, Вы писали:
K>Контрвопрос: а с какого перепоя плюс должен там использоваться?! Неужели .Join тебе так впадлу писать, что тебе подавай операторы?
Так давайте вообще отменим операторы и будем только функции использовать. Ясно же зачем — операторы намного нагляднее.
Re: Почему не используется оператор + для списков и пр.?
Здравствуйте, Shmj, Вы писали:
S>Ведь удобно то и однозначность, как и со строками, вполне достигается.
Может чтобы вы могли предсказуемо контролировать результат? Иногда лучше вернуть иммутабельный контейнер, иногда выгоднее добавить в текущий. Я за иммутабельность, но вменяемая библиотека появилась попозже стандарта.
В принципе может и добавят когда-то перегрузку таких операторов, но почему-то не спешат.
Re[7]: Почему не используется оператор + для списков и пр.?
S>И приведет к исключению. Что тут странного? Вы всегда создаете новый контейнер и пихаете в него элементы двух контейнеров.
S>
S>В чем неопределенность поведения?
Что бы возникло исключение .net framework придется перебрать все ключи одного Dictionary и сравнить с каждым ключем со второго .
А это повидение совсем отличается от повидения: "просто создать новый список и скопировать память из двух других."
Підтримати Україну у боротьбі з країною-терористом.
Здравствуйте, #John, Вы писали:
S>>В чем неопределенность поведения? J>Что бы возникло исключение .net framework придется перебрать все ключи одного Dictionary и сравнить с каждым ключем со второго . J>А это повидение совсем отличается от повидения: "просто создать новый список и скопировать память из двух других."
Понятно что это просто синтаксический сахар, т.е. не ради прироста скорости а ради простоты написания.
И еще. Для словарей это не так уж нужно. А вот для массивов и списков — было бы весьма, так как копировать приходится довольно часто (и здесь то можно было бы применить низкоуровневое копирование):
Здравствуйте, Shmj, Вы писали:
S>Здравствуйте, Sinatr, Вы писали:
S>>А можно поконкретнее? Какой код не нравится, как вы хотите и почему?
S>Хочу так:
S>