Considere la interfaz:tipo de la propiedad de artículos en Fa #
type IVector =
abstract Item : int -> float
Ahora, definamos la clase:
type DenseVector(size : int) =
let mutable data = Array.zeroCreate size
interface IVector with
member this.Item with get n = data.[n]
¿Qué hay de suministro de un método para mutar la entrada de orden n de la vector denso? Entonces, sería bueno que modificar el código anterior como:
type DenseVector(size : int) =
let mutable data = Array.zeroCreate size
interface IVector with
member this.Item with get n = data.[n]
and set n value = data.[n] <- value
Sin embargo, me sale el siguiente error debido a la firma del método abstracto Item
en la interfaz IVector
:
Sin propiedad abstracta se encontró que corresponde a esta anulación.
Entonces, ¿cuál debería ser la firma de Item
en IVector
?
excelente. Muchas gracias! – Allan
raro, definir el colocador en la interfaz no es necesario en C# ... –
@Mauricio, sí lo es. Es decir, lo es si desea llamar al setter a través de la interfaz. Y si no lo haces, y solo tienes el getter en la interfaz, entonces sigue siendo ilegal descomentar al setter aquí: "public class V: IV {double IV.this [int x] {get {return 0.0;}/* set {} * /}} "(recuerde que todas las interfaces en F # son explícitas). – Brian