Если я создаю новый язык с выводом типа, без явных типов и без поддержки наследования классов, а затем хочу добавить наследование, какие дополнительные минимальные подсказки компилятору необходимы для устранения неоднозначности типов при добавлении особенность?
Нужны ли имена классов?
EDIT
Типовое заражение прослеживается через назначения в программе, в том числе между функциями.
ОК на начальном языке, у вас есть имена классов, такие как MyTypeName1
, например:
myVariable1 = New(MyTypeName1)
myVariable2 = New(MyTypeName2)
И типы MyTypeName1
и MyTypeName2
выведены для myVariable1
и myVariable2
соответственно. Но тогда, если мы хотим улучшить язык для поддержки:
MyVariable3 = myVariable1
MyVariable3 = myVariable2
, который можно отследить через код (myVariable3 теперь может содержать два типа, которые предположительно находятся в иерархии).
EDIT
Члены MyTypeName1 и MyTypeName2 выводятся из таких утверждений, как:
myVariable1.name="Fred"
myVariable2.name="JX3009"
Что если член name
в MyTypeName1
и MyTypeName2
не входит в общий базовый класс? Что если нам нужно другое свойство name в MyTypeName1
и MyTypeName2
и ни одного в базовом классе? Есть ли элегантный способ сказать компилятору, что делать / как обращаться? (Идея с выводом типа состоит в том, чтобы уменьшить количество набираемых символов, а не увеличить их ...?)
Или нам нужно явно указать иерархию?