Рассмотрим интерфейс:
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
:
Не найдено абстрактного свойства, соответствующего этому переопределению.
Итак, какой должна быть подпись Item
в IVector
?