- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个具有相等和比较函数默认实现的接口(interface)。
如果我从类型 IKeyable<'A>
中删除所有内容除了Chìa khóa
成员,只要我不添加默认实现,它就是一个有效的接口(interface)。从 IKeyable<'A>
中删除其他接口(interface)实现,并且仅保留默认成员会得到相同的结果。
type IKeyable<'A when 'A: equality and 'A :> IComparable> =
abstract member Key : 'A
default this.Equals obj = // hidden for clarity
default this.GetHashCode () = // hidden for clarity
interface IEquatable<'A> with
member this.Equals otherKey = // hidden for clarity
interface IComparable<'A> with
member this.CompareTo otherKey = // hidden for clarity
interface IComparable with
member this.CompareTo obj = // hidden for clarity
type Operation =
{ Id: Guid }
interface IKeyable with // Error: The type 'IKeyable' is not an interface type
member this.Key = this.Id
我想使用IKeyable<'A>
作为一个接口(interface),以便“获得”相等和比较的默认实现。
interface ... with
上出现错误消息在类型Operation
下:The type 'IKeyable
1 Câu trả lời
接口(interface)不能有方法实现,而您的类型有五个方法实现 - Equals
, GetHashCode
, IEquatable<_>.Equals
, IComparable<_>.CompareTo
,和IComparable.CompareTo
.
接口(interface)纯粹是一组方法和属性。它不像基类,它不能为实现者提供一些“默认”实现或基本行为或实用方法之类的东西。
要使您的类型成为接口(interface),请摆脱所有实现:
type IKeyable<'A when 'A: equality and 'A :> IComparable> =
inherit IEquatable<'A>
inherit IComparable<'A>
abstract member Key : 'A
如果您确实想保留默认实现,则必须将其设为基类而不是接口(interface),在这种情况下Operation
必须成为一个类而不是一条记录:
type Operation(id: Guid)
inherit IKeyable
override this.Key = id
member val Id = id
关于interface - 为什么这个类型不是接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57532604/
Tôi đang cố gắng tận dụng nhiều hơn các giao diện trong cơ sở mã của mình cho máy chủ trò chơi mà tôi đang viết và hiểu các khái niệm cấp cao cũng như thời điểm nên sử dụng giao diện (tôi nghĩ vậy). Trong trường hợp của tôi, tôi sử dụng chúng để tách các gói hàng của tôi ra khỏi nhau và tạo ra
Tôi có một giao diện gọi là Widget được sử dụng trong suốt dự án của tôi. Tuy nhiên, nó cũng được sử dụng như một Prop cho một thành phần gọi là Widget. Cách tốt nhất để xử lý vấn đề này là gì? Tôi có nên thay đổi tiện ích của mình không?
Có một giao diện có thể là một trong nhiều giao diện giao diện a {x:string} giao diện b {y:string} giao diện c {z:string}
Tôi đã gặp phải tình huống cần phải gọi đến dịch vụ của bên thứ ba để lấy thông tin. Những dịch vụ này có thể khác nhau đối với những khách hàng khác nhau. Tôi có chức năng xác thực trong giao diện của mình như hiển thị bên dưới. giao diện IServiceProvider { bool
Trong trường hợp của tôi, "RequestHandlerProxy" là một struct có các trường là giao diện "IAdapter" có các phương thức có thể được gọi và có đầu vào là một struct "RequestHandlerProxy".
Tôi có một giao diện Interface1 đã được lớp A triển khai và một số giá trị biến riêng tư được thiết lập và tôi đang gửi đối tượng của lớp A đến lớp tiếp theo chấp nhận đầu vào là Interface2. Vậy làm sao tôi có thể
Giả sử tôi có một lớp và cấu trúc giao diện như thế này: interface IService {} interface IEmailService : IService { Task SendAs
Có ai biết tôi có thể tìm thấy định nghĩa về giao diện XML-RPC (trong OpenERP 7) ở đâu không? Tôi muốn biết những tham số và thuộc tính đối tượng nào là cần thiết để tạo hoặc lấy một đối tượng. Các ví dụ XML cho từng phần tử cũng sẽ rất hữu ích. Câu trả lời hay nhất
Gần đây tôi đọc được về quan niệm sai lầm rằng giao diện là trừu tượng. Một bài đăng như vậy là http://blog.ploeh.dk/2010/12/02/InterfacesAreNotAbstract
Nếu tôi có một IInterface con hiện có được triển khai bởi bên thứ ba và tôi muốn thêm các chương trình trợ giúp, liệu Delphi có cung cấp cách dễ dàng nào để thực hiện việc này mà không cần phải chuyển hướng thủ công từng phương thức giao diện không? Nghĩa là, cho
Tôi đang cố gắng gán một mảng Bài viết vào tài liệu Mongoose của mình nhưng Typescript có vẻ không thích điều này và tôi không biết tại sao nó lại hiển thị cảnh báo/lỗi này cho biết không thể gán được. Sơ đồ và giao diện Mongoose của tôi (
Tôi có hai giao diện: public interface IController { void doSomething(IEntity thing); } public inte
Có thể tạo giao diện mở rộng giao diện Serializable không? Nếu có, giao diện mở rộng có hoạt động giống như giao diện Serilizable không?
Tôi đang cố gắng tạo một lớp trung gian giữa hai kho lưu trữ, lớp này lấy dữ liệu từ kho lưu trữ A, chuyển đổi sang kiểu tương ứng trong kho lưu trữ B, sau đó lưu trữ dữ liệu đó. Vì tôi cần chuyển đổi khoảng 50-100 kiểu, tôi hy vọng sẽ sử dụng map[string]func và dựa mã của tôi vào s
Tôi đang thực hiện một yêu cầu trong đó tôi nhận được một đối tượng JSON chứa giá trị ngày dưới dạng chuỗi. Nhiệm vụ của tôi là lưu trữ các đối tượng Ngày trong cơ sở dữ liệu. Loại thứ này: {"start_date": "2019-05-29", "
Mục tiêu của phương pháp tiếp cận của chúng tôi là giới thiệu giao diện cho các lớp mô hình và DAO hiện có của chúng tôi. Các lớp mô hình được xác định bằng nhiều loại ID tài nguyên khác nhau, không chỉ là các số ngẫu nhiên mà còn mang ý nghĩa và hành vi. Vì vậy, chúng ta phải sử dụng các đối tượng thay vì các kiểu nguyên thủy để biểu diễn
Giao diện Collection có nhiều phương thức. Giao diện Danh sách mở rộng giao diện Bộ sưu tập. Nó khai báo cùng một giao diện như Collection (int
Tôi có một ứng dụng máy chủ Java sử dụng Jackson để thực hiện tuần tự hóa chung các DTO bằng API phản chiếu. Ví dụ, đối với giao diện DTO này: gói com.acme.libr
Nếu tôi có một giao diện trong Kotlin: interface KotlinInterface { val id: String } Tôi có thể triển khai nó như thế này: class MyClass
Tôi biết sự khác biệt giữa tất cả các trình sửa đổi truy cập trong Java. Tuy nhiên, tôi đã được hỏi một câu hỏi rất thú vị mà tôi đã rất khó khăn để tìm ra câu trả lời: Sự khác biệt giữa giao diện riêng tư và công khai trong Java là gì?
Tôi là một lập trình viên xuất sắc, rất giỏi!