Если я создаю новый язык с типом вывода, без явных типов и без наследования классов, а затем хочу добавить наследование, то какие минимум дополнительные подсказки для компилятора, необходимые для разрешить неоднозначность типа при добавлении функции?получил запрос типа, хочу добавить наследование класса
Нужны ли имена классов?
EDIT
Тип-умолчанию разрушение прослеживается через присвоения по всей программе, включая между функциями.
OK в исходном языке, то есть имена классов, как 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
не быть в общем базовом классе? Что делать, если мы хотим иметь другое имя в MyTypeName1
и MyTypeName2
и ни одного в базовом классе? Есть ли элегантный способ рассказать компилятору, что делать/как обрабатывать? (Идея с типом вывода состоит в том, чтобы уменьшить типизацию, не увеличивая ее ...?)
Или нам нужно явно указать иерархию?
Домашнее задание вопрос? –
Джим: Если это так, я рад, что это не моя домашняя работа, потому что я действительно пытаюсь понять, о чем он говорит :) –
Очень приятно пнуть вас, джентльмены. :) – martinr