Ответ 1
Эквивалент - это единица, которая синтаксически определена как ()
.
type Bar() =
interface IFoo with
member this.Bar () = ()
Представьте себе следующий интерфейс в С#:
interface IFoo {
void Bar();
}
Как я могу реализовать это в F #? Все примеры, которые я нашел в течение 30 минут поиска в Интернете, показывают только примеры с возвращаемыми типами, которые, я полагаю, более распространены в функциональном стиле, но в этом случае я не могу избежать этого.
Вот что я до сих пор:
type Bar() =
interface IFoo with
member this.Bar() =
void
Сбой с _FS0010:
Неожиданное ключевое слово 'void' в выражении _.
Эквивалент - это единица, которая синтаксически определена как ()
.
type Bar() =
interface IFoo with
member this.Bar () = ()
Общие сведения о типах F # см. в разделе
Основной синтаксис F # - типов
С этой страницы:
Тип unit имеет только одно значение, написанное "()". Это немного похоже на "void" в том смысле, что если у вас есть функция, которую вы вызываете только для побочных эффектов (например, printf), такая функция будет иметь тип возврата "unit". Каждая функция принимает аргумент и возвращает результат, поэтому вы используете "unit", чтобы показать, что аргумент/результат неинтересен/бессмыслен.
Возвращаемый тип должен быть(), поэтому что-то вроде члена this.Bar =() должен сделать трюк
Эквивалент в F # равен:
type IFoo =
abstract member Bar: unit -> unit