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

Сообщение Re[42]: Сложности выбора или часть не может быть лучше целог от 24.09.2023 9:33

Изменено 24.09.2023 10:06 Serginio1

Re[42]: Сложности выбора или часть не может быть лучше целог
Здравствуйте, rudzuk, Вы писали:


S>> На самом деле использование перегрузки операторов где попало это и есть костылю. В С++ даже битовые операции применят ко всему, что угодно.

S>> Вот это и есть костыль.
S>> Для примера возьмем ту же самую сортировку и <>=/
S>> Те же строки по разному сравниваются, а у класса можно сортировать по разным свойствам итд.

R>Давай без бла-бла. Код покажи, на божественных дженериках.

https://learn.microsoft.com/ru-ru/dotnet/api/system.collections.generic.list-1.sort?view=netcore-3.1

S>> Я имел ввиду, что использование математических операций это для числел, коллекции, словари с вычислением Hash кода, который может быть различным даже для одного класса, в зависимости, какие поля хотим сравнивать итд.


R>Да знаю я чего ты имел ввиду: если шарп не могет, то это и не нужно Все же просто До генерикматха и вычислительные операции в дженериках не нужны были, правда же?


S>> Ты вот приведи пример шаблона где могут складываться и строки и Rect


R>Я его тебе уже показал: left + right, если ты не понял.

А я тебе показал
Я тебе уже ссылки приводил https://learn.microsoft.com/en-us/dotnet/standard/generics/math
static T Add<T>(T left, T right)
    where T : INumber<T>
{
    return left + right;
}




Реализуй для своего класса IAdditionOperators
https://learn.microsoft.com/en-us/dotnet/api/system.numerics.iadditionoperators-3?view=net-7.0
И используй если тебе этого хочется.

Но ты покажи реальный шаблон который не просто складывает, а что то делает полезное складывая для строк и Rect.

S>> S>> Ну тогда и не говори, что IDE не нужна.


S>> R>Я этого никогда не говорил, не приписывай мне свои фантазии.


S>> Какая-то странная логика... Завтра выйдет среда с починенным интелисенсом и язык сразу станет нужен? [А по мне так, нахрен не нужен язык, где нормальную шаблонизацию заменили огороженными симулякрами и окостылили со всех сторон. Где для того, чтобы разобраться в коде, нужно запустить монстроидную IDE, без которой хер ты его нормально почитаешь.


R>И где ты видишь слова о том, что IDE не нужна? Тут сказано, что язык не нужен, если его без IDE читать невозможно


Мне не нужен язык с монструозной IDE.
Не монструозная IDE это блокнот.
При этом это был ответ на
S> Ну и нахрен такой язык нужен если нет нормального среды разработки.
Re[42]: Сложности выбора или часть не может быть лучше целог
Здравствуйте, rudzuk, Вы писали:


S>> На самом деле использование перегрузки операторов где попало это и есть костылю. В С++ даже битовые операции применят ко всему, что угодно.

S>> Вот это и есть костыль.
S>> Для примера возьмем ту же самую сортировку и <>=/
S>> Те же строки по разному сравниваются, а у класса можно сортировать по разным свойствам итд.

R>Давай без бла-бла. Код покажи, на божественных дженериках.

https://learn.microsoft.com/ru-ru/dotnet/api/system.collections.generic.list-1.sort?view=netcore-3.1

S>> Я имел ввиду, что использование математических операций это для числел, коллекции, словари с вычислением Hash кода, который может быть различным даже для одного класса, в зависимости, какие поля хотим сравнивать итд.


R>Да знаю я чего ты имел ввиду: если шарп не могет, то это и не нужно Все же просто До генерикматха и вычислительные операции в дженериках не нужны были, правда же?


S>> Ты вот приведи пример шаблона где могут складываться и строки и Rect


R>Я его тебе уже показал: left + right, если ты не понял.

А я тебе показал
Я тебе уже ссылки приводил https://learn.microsoft.com/en-us/dotnet/standard/generics/math
static T Add<T>(T left, T right)
    where T : INumber<T>
{
    return left + right;
}




Реализуй для своего класса IAdditionOperators
https://learn.microsoft.com/en-us/dotnet/api/system.numerics.iadditionoperators-3?view=net-7.0
И используй если тебе этого хочется.

Но ты покажи реальный шаблон который не просто складывает, а что то делает полезное складывая для строк и Rect.

И ты как то отмел использование перегрузки операций для различных типов сравнения и сложения.
В итоге придешь к дженериковским интерфейсам или методам.
То есть использование перегрузки операторов нужна для чисел. Во всех остальных случаях ты так же будешь использовать то же что и в дженериках.
Поэтому в C# не пошли твоим путем. Хотя такие предложения были http://rsdn.org/forum/dotnet/7749568.flat
Автор: varenikAA
Дата: 08.06.20

interface IMonoid<T>
{
static T Zero{get;}
static T operator+(T t1, T t2)
static T operator*(T t1, T t2)
}


И можно было бы переопределять методы для типа
role IntMonoid extednds int
{
public static int Zero = 0;
}

То есть Zero переопределялся, а operator берутся из класса.

Но отказались.
S>> S>> Ну тогда и не говори, что IDE не нужна.

S>> R>Я этого никогда не говорил, не приписывай мне свои фантазии.


S>> Какая-то странная логика... Завтра выйдет среда с починенным интелисенсом и язык сразу станет нужен? [А по мне так, нахрен не нужен язык, где нормальную шаблонизацию заменили огороженными симулякрами и окостылили со всех сторон. Где для того, чтобы разобраться в коде, нужно запустить монстроидную IDE, без которой хер ты его нормально почитаешь.


R>И где ты видишь слова о том, что IDE не нужна? Тут сказано, что язык не нужен, если его без IDE читать невозможно


Мне не нужен язык с монструозной IDE.
Не монструозная IDE это блокнот.
При этом это был ответ на
S> Ну и нахрен такой язык нужен если нет нормального среды разработки.