Подтвердить что ты не робот

Как реализовать член интерфейса, который возвращает void в F #

Представьте себе следующий интерфейс в С#:

interface IFoo {
    void Bar();
}

Как я могу реализовать это в F #? Все примеры, которые я нашел в течение 30 минут поиска в Интернете, показывают только примеры с возвращаемыми типами, которые, я полагаю, более распространены в функциональном стиле, но в этом случае я не могу избежать этого.

Вот что я до сих пор:

type Bar() =
    interface IFoo with
        member this.Bar() =
            void

Сбой с _FS0010:

Неожиданное ключевое слово 'void' в выражении _.

4b9b3361

Ответ 1

Эквивалент - это единица, которая синтаксически определена как ().

type Bar() =
    interface IFoo with
        member this.Bar () = ()

Ответ 2

Общие сведения о типах F # см. в разделе

Основной синтаксис F # - типов

С этой страницы:

Тип unit имеет только одно значение, написанное "()". Это немного похоже на "void" в том смысле, что если у вас есть функция, которую вы вызываете только для побочных эффектов (например, printf), такая функция будет иметь тип возврата "unit". Каждая функция принимает аргумент и возвращает результат, поэтому вы используете "unit", чтобы показать, что аргумент/результат неинтересен/бессмыслен.

Ответ 3

Возвращаемый тип должен быть(), поэтому что-то вроде члена this.Bar =() должен сделать трюк

Ответ 4

Эквивалент в F # равен:

type IFoo =
    abstract member Bar: unit -> unit