Рассмотрим интерфейс:
type IVector =
abstract Item : int -> float
Теперь давайте определим класс:
type DenseVector(size : int) =
let mutable data = Array.zeroCreate size
interface IVector with
member this.Item with get n = data.[n]
А как насчет предоставления метода для изменения n-й записи плотного вектора? Затем было бы неплохо изменить приведенный выше код как:
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
Однако я получаю следующую ошибку из-за подписи абстрактного метода Item
в интерфейсе IVector
:
Не было найдено абстрактного свойства, соответствующего этому переопределению.
Итак, какой должна быть подпись элемента
в IVector
?