Eiffel: как создать и использовать класс UTIL или «вызвать статический метод из класса» - PullRequest
0 голосов
/ 12 октября 2018

как мой пост описывает это, я хотел бы создать класс UTIL с функцией never_both.

class
    UTIL

create
    default_create

feature -- could be in class BOOLEAN

    double_implies, reversible_implies, never_both (a, b: BOOLEAN): BOOLEAN
            -- Into boolean class with never_with
        do
            if a and b then
                Result := False
            else
                Result := True
            end
        end

end

Когда я его использую

invariant
    never_both: {UTIL}.never_both (attached last_error, attached last_success_message)

компилятор жалуется на VUNO ошибку

never_both used in the non-object call is not a class feature.

Я видел 2 записи о создании объектов - {UTIL}.never_both (a, b) - ({UTIL}).never_both (a, b)

В чем разница между ними?

Как создать объект широкого применения (может быть даже один раз по всему миру, если хотите!) Объект для использования этогоUTIL, если возможно, в Eiffel?!

Я знаю, что это набор вопросов, поэтому я поставил их в Жирный

1 Ответ

0 голосов
/ 12 октября 2018

Если вы хотите использовать функцию без создания соответствующего объекта, она должна быть помечена как class функция.Это делается в постусловии функции с тем же ключевым словом:

foo ...
    do
          ...
    ensure
        instance_free: class
        ...
    end

. После этого функция может использоваться в безобъектном вызове {BAR}.foo ....

. Запись ({BAR}).qux необозначить безобъектный вызов.Это вызов объекта для целевого объекта типа TYPE [BAR].Объект описывает тип BAR.

...