Эйфель: как предшественник

Может быть, я захожу слишком далеко, но Eiffel настолько прекрасен, что я хотел бы иметь возможность сказать like precursor для класса функции Result.

Моя точка зрения

deferred class A
    give_me_foo: STRING
    deferred
    end
end -- class

class real_foo
    give_me_foo: like Precursor
        do
        end
end -- class

Было бы неплохо, он существует?

Обновление: я оставил желание на сайте Eiffel здесь


person Pipo    schedule 09.10.2018    source источник


Ответы (2)


К сожалению, нет, однако это возможно:

give_me_foo: like {A}.give_me_foo

что менее элегантно, но более явно.

person obnosim    schedule 10.10.2018

Что означает like Precursor? Когда я прочитал ваш вопрос, я предположил, что пример будет означать A, то есть результат функции должен соответствовать классу-предшественнику A. Но другой человек, который ответил на ваш вопрос, истолковал его по-другому. Я думаю, что интерпретация другого человека, вероятно, соответствует вашим намерениям, но я не думаю, что предложенный синтаксис like Precursor был бы хорошей идеей, потому что он определенно неоднозначен.

person petergummer    schedule 10.10.2018
comment
Какой ТИП прекурсора? он возвращает ТИП нет? как и Current, Current - это ТИП текущего объекта или я ошибаюсь? Как like give_me_foo но без именованной функции, это двусмысленно или вы не поняли мою идею/концепцию? - person Pipo; 10.10.2018
comment
Итак, вы имеете в виду тип функции Precursor. Для меня не было очевидно, что вы имели в виду именно это, потому что синтаксис напоминает like Current, что имеет совсем другое значение. Я думаю, что это должно сбить с толку новых пользователей Eiffel. Как показал другой ответ, у нас уже есть явные и краткие средства привязки типа результата функции без двусмысленности в отношении того, как его читать. - person petergummer; 10.10.2018
comment
вы имеете в виду like {A}.give_me_foo, это нормально, но мне нужно изменить 2 места, если я хочу изменить наследование класса A ;-), но я понимаю вашу цель избежать путаницы. Спасибо! - person Pipo; 10.10.2018