usan una que programacion las interfaz interfaces implementacion declaracion declara cómo como caracteristicas atributos interface compiler-errors f# void unit-type

interface - una - Cómo implementar un miembro de la interfaz que devuelve void en F#



implementacion de interfaces en java (4)

Imagina la siguiente interfaz en C #:

interface IFoo { void Bar(); }

¿Cómo puedo implementar esto en F #? Todos los ejemplos que he encontrado durante 30 minutos de búsqueda en línea muestran solo ejemplos que tienen tipos de devolución que supongo que son más comunes en un estilo funcional, pero algo que no puedo evitar en esta instancia.

Esto es lo que tengo hasta ahora:

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

Falla con _FS0010:

Inesperada palabra clave ''void'' en expresión_.


El equivalente en F # es:

type IFoo = abstract member Bar: unit -> unit


El equivalente es una unidad que se define sintácticamente como () .

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


El tipo de retorno debe ser (), por lo que algo como miembro this.Bar = () debería hacer el truco


Para información general sobre los tipos F #, vea

La sintaxis básica de F # - tipos

Desde esa página:

El tipo de unidad tiene un solo valor, escrito "()". Es un poco como "vacío", en el sentido de que si tiene una función que solo requiere efectos secundarios (por ejemplo, printf), dicha función tendrá un tipo de retorno de "unidad". Cada función toma un argumento y devuelve un resultado, así que usa "unidad" para indicar que el argumento / resultado no es interesante / sin sentido.