Xem xét giao diện:Loại Item bất động sản trong F #
type IVector =
abstract Item : int -> float
Bây giờ, chúng ta hãy xác định các lớp:
type DenseVector(size : int) =
let mutable data = Array.zeroCreate size
interface IVector with
member this.Item with get n = data.[n]
gì về cung cấp một phương pháp để biến những entry n-thứ của vector dày đặc? Sau đó, nó sẽ được tốt đẹp để thay đổi mã trên như:
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
Tuy nhiên, tôi nhận được lỗi sau vì chữ ký của phương pháp trừu tượng Item
trong giao diện IVector
:
Không có tài sản trừu tượng đã được tìm thấy tương ứng với ghi đè này.
Vì vậy, chữ ký của Item
trong IVector
là gì?
Tuyệt vời. Cảm ơn bạn rất nhiều! – Allan
lạ, xác định trình thiết lập trong giao diện là không cần thiết trong C# ... –
@Mauricio, đúng vậy. Đó là, nếu bạn muốn gọi setter thông qua giao diện. Và nếu bạn không, và chỉ có getter trong giao diện, sau đó nó vẫn là bất hợp pháp để uncomment setter ở đây: "public class V: IV {double IV.this [int x] {get {return 0.0;}/* set {} * /}} "(nhớ lại rằng tất cả các giao diện trong F # là rõ ràng). – Brian