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.