ИИ для программиста?
Да обычно ф5 жмёшь, и у него снова пустые мозги
Было бы странно, если бы после "формат С:" винда продолжила работать, как и до этого. Попробуйте
Но вообще - вы просто не умеете их готовить
Прихожу на следующий день и продолжаю вчерашний разговор, если надо.
Короче, лять, они похоже решили пойти тем же путём, что и с электричками. Раз не хотите юзать наше электро-овно, мы вам зажигалки в дерьмо превратим, так что вы сами побежите за электричками.
Раз не хотите юзать наш ИИ добровольно, мы вам обычный поиск в дерьмо превратим, и вы побежите юзать наш ИИ аж вприпрыжку.
Я лять не спрашивал, в чём отличие!!!
А тут ваще хорошо - "если виртуальный метод объявлен абстрактным". Ты код-то пытался писать? - это к тому, кто такую статью написал. Нельзя объявить одновременно абстрактный и виртуальный методы.
Вы тоже не то ответили )))
Ладно, другой вопрос. Вот если нужна работа с разными типами данных по-разному, но вызовом одной функции, используют перегрузку. Для типов значений это превращается в написание нескольких десятков перегрузок для каждого подобного метода. В том же Дотнете это, например, классы с конвертацией строк в числа и обратно. А короче можно, чтобы хотя бы не писать стопицот сигнатур, различающихся лишь типом входа или выхода?
А главное, что, если появляется какой другой тип? Как заставить написать для него перегрузку? Т.е. отсутствие нужной перегрузки выяснится лишь спустя время, когда захочется такой метод использовать. Как заставить создателя такого нового типа добавить обработку этого типа во все классы, где этот тип должен использоваться с подобной перегрузкой? Только методами компилятора или анализатора кода - т.е. до выполнения программы. Чтобы вам было проще понять - допустим к тем же числовым типам добавляется новый числовой тип. Теперь надо заставить какой-нибудь класс Convert заиметь методы типа
string ToString(NewType value)
и
NewType FromString(string s)
в дополнение к его уже существующим
int FromString(string s)
double FromString(string s)
и т.д.
И так ко всем классам проекта, где тип может использоваться так же, как и другие подобные типы.
Как заставить автоматически, чтобы не читать документацию, где бы было написано, что при создании такого-то типа нужно внести такие-то изменения в такие-то классы для его поддержки?
Ну или хотя бы подсказка давалась, предупреждение, что мол в этом классе такой-то метод перегружен для всех подобных типов, а вот такого подобного типа нет - может, стоить добавить?
Кроме как введением некоего словаря поддерживаемых типов, больше ничего не приходит в голову. Причём при каждом старте программы она должна сканировать (через рефлексию) свои пространства имён на доступные типы, а классы с перегрузками - проверять, есть ли у них перегрузки нужных методов для всех просканенных типов. Но это всё будет работать лишь после запуска программы. А надо так - создал новый тип, и максимум при компиляции вывелась ошибка, что в таким-то классах нет перегрузки для этого типа.
Как послабление, можно условиться, что создавать новые типы можно лишь в определённом пространстве имён. Ну и при старте прога будет сканировать лишь это пространство.
И теперь вот эту всю бадью надо скормить ИИ, и чтобы он выдал рабочий результат, пока я за кофе с булочкой сгоняю.
ну это уже само по себе не взлетит
int FromString(string s)
double FromString(string s)
но вопрос интересный, мне приходит в голову только такой костыль
тут при создании нового класса Вася может забыть написать стандартный конструктор
это всплывет только при компиляции, когда новый тип захотят использовать в конверторе
interface IConvertable
{
string ToString();
IConvertable applyDataFromString(string value);
}
class MyType : IConvertable
{
object myValue;
public IConvertable applyDataFromString(string value)
{
this.myValue = Process(value);
return this;
}
private object Process(string value)
{
//convert string to MyType
}
}
class Converter
{
string ToString(IConvertable obj) => obj.ToString();
IConvertable FromString<T>(string value) where T : IConvertable, new()
{
return new T().applyDataFromString(value);
}
}
Вы тоже не то ответили
Видимо непонятно.
Прочитайте так: "If a method is declared abstract, it is still virtual to any class inheriting from the abstract class"
И теперь вот эту всю бадью надо скормить ИИ
Ну опять, устал повторять, как минимум нужно точно знать что хочешь и правильно сформулировать. Я и сам пока не могу точно понять.
Что-то мне этот хак с IConvertible напоминает... Ага, вот - что-то вроде ограничения для параметра типа, чтобы тип был типом значения.
https://stackoverflow.com/a/8746643/5015385
Но это именно хак и лишь для типов значений. Я их лишь в качестве примера привёл. В реальности у меня свои типы, и метод класса должен их поддерживать - через перегрузку типа
Update(Type1 value)
Update(Type2 value)
И если я ввожу новый тип Type3 - должна появиться перегрузка Update с поддержкой этого типа. Как сделать, чтобы при компиляции ошибка выдавалась или хотя бы предупреждение, что в таких-то классах у таких-то методов нужно добавить перегрузку с новым типом?
Дженерики не подходят, т.к. работа с разными типами разная - немного отличающийся код. При этом использую перегрузку, чтобы не писать в одном варианте метода пачку ифов с проверкой типа в рантайме
if (value.GetType() is...)
Что-то подобное обсуждается тут и тут
https://stackoverflow.com/questions/10833918/generic-metho...
https://stackoverflow.com/a/4907695/5015385
И теперь вот эту всю бадью надо скормить ИИНу опять, устал повторять, как минимум нужно точно знать что хочешь и правильно сформулировать. Я и сам пока не могу точно понять.
Если бы я точно знал, чего хочу, нафига бы мне ИИ нужен был? Мне и вы были бы не нужны - я бы сам всё сделал. )))))
Прочитайте так: "If a method is declared abstract, it is still virtual to any class inheriting from the abstract class"
Нифига он не виртуальный, если строго следовать определению виртуальности. А там в определении набор свойств, включая "может быть переобределён". В то время как абстрактный метод ДОЛЖЕН быть переопределён. Виртуальный метод должен иметь тело, абстрактный - должен НЕ иметь.
Нифига он не виртуальный, если строго следовать определению виртуальности
Так смысл то другой хотели донести, как я понял.
Скажем так: видя только перегруженные классы, нельзя сказать был ли метод определен абстрактным или виртуальным. Ну или по другому что определение абстрактности метода подразумевает и его виртуальность.
Про картинки верно но надо знать какие и для кого. Я скармливаю свои фотки с кошкой и кошачьим кормом
Ну а если серьезно подойти к вопросу нанит она на основании умгебунг, беря старые данные. Анализы делает только на данные Ф. На другие темы пока молчат, оно и логично в связи с данной ситуацией на уровне гос.
На данный момент любит все что связано с кинетикой и энергетикой. И любит жрать формулы, очень эффективно. Ах да для роьотик она любит брать программу автоматизации обычной кофе машины как корпус для своих идей. В кинетике выплюнула аж три формулы. По ним конечно следует то, что нужно много ездить жрать и двигаться. Оно и понятно..повышение бипа безоговорочно для них.
Кстати сегодня проверила в интернете как реагирует talk back на фотографии. У некоторых производителей заложены фразы про бит и вклады к примеру ну и плюс обычное описание. То есть если картинки нужны для больших объектов, их нужно программировать правильно и для своих целей. Для маленьких нужно ещё проверить.
ну вот что выдало:
Задача: Автоматизация добавления перегрузок методов для новых типов данных
Описание:
Необходимо разработать механизм, который позволит автоматически добавлять перегрузки методов для новых типов данных в проекте. В текущей системе для каждого типа данных создаются отдельные перегрузки методов, что приводит к необходимости написания множества сигнатур, различающихся только типом входных или выходных данных. Это особенно актуально для классов, занимающихся конвертацией данных, таких как Convert.
Требования:
1. Минимизация ручного труда: Избежать необходимости вручную добавлять перегрузки методов для каждого нового типа данных.
2. Автоматическое обнаружение: Обеспечить автоматическое обнаружение отсутствующих перегрузок для новых типов данных на этапе компиляции.
3. Подсказки и предупреждения: В случае отсутствия перегрузки для нового типа данных, система должна выдавать предупреждение или ошибку на этапе компиляции.
4. Расширяемость: Обеспечить возможность легкого добавления новых типов данных и их поддержки в существующих классах без необходимости изменения кода этих классов.
Пример:
При добавлении нового числового типа NewType, система должна автоматически добавить методы:
string ToString(NewType value); NewType FromString(string s);
в дополнение к уже существующим методам:
int FromString(string s); double FromString(string s);
Цель: Обеспечить, чтобы при добавлении нового типа данных разработчик автоматически получал все необходимые перегрузки методов для работы с этим типом, и отсутствие перегрузок выявлялось на этапе компиляции, а не во время выполнения программы.
А главное, что, если появляется какой другой тип? Как заставить написать для него перегрузку? Т.е. отсутствие нужной перегрузки выяснится лишь спустя время, когда захочется такой метод использовать. Как заставить создателя такого нового типа добавить обработку этого типа во все классы, где этот тип должен использоваться с подобной перегрузкой?
Нельзя это (автоматически) сдеать. И правильно что нельзя, поскольку не нужно.
Только методами компилятора или анализатора кода - т.е. до выполнения программы. Чтобы вам было проще понять - допустим к тем же числовым типам добавляется новый числовой тип. Теперь надо заставить какой-нибудь класс Convert заиметь методы типаstring ToString(NewType value)
Юнит-тест где проверять кто с кем связан и кто кому что должен.