다음과 같이 작동하는 일반적인 equals
메소드를 작성하고 싶습니다.
이를 위해 인터페이스를 만들었습니다. comparable
:
equals 매개변수가 다음과 같이 이 comparable
인터페이스를 구현하는지 확인할 수 있습니다.
그러나 지금까지는 a
가 a
是否也满足 comparable
约束并将其转换为可以使用 ==
제약 조건도 충족하는지 확인하고 이를 ==
를 사용할 수 있는 것으로 변환하는 것이 불가능하다는 것을 알았습니다.
런타임에 제네릭 유형 T any
가 T any
在运行时是否是 comparable
,如果是,则使用 ==
인지 확인하고 그렇다면 ==
를 사용하여 비교하는 방법이 있나요?
전체 코드를 comparable
泛型类型,但我想让用户可以手动添加 equals
方法,如果他们的类型恰好不是 comparable
(例如,因为它基于切片) )。
如果它使用相等运算符进行编译,则它是可比较的。受 any
约束的类型参数在定义上是不可比较的:它实际上可以是任何内容,包括 func() error
일반 유형에서만 작동하도록 제한할 수 있지만 유형이
메소드를 수동으로 추가할 수 있도록 허용하고 싶습니다. equals
函数。您必须使用反射或仅接受实现“相等”接口的参数,例如您自己的 Comparable[T any]
항등 연산자를 사용하여 컴파일하면 비교 가능합니다. any
가 적용되는 유형 매개변수는 정의상 비교할 수 없습니다. func() 오류
를 포함하여 사실상 모든 것이 될 수 있습니다. Value#Comparable
따라서 정적 유형을 사용하여
Comparable[T any]
와 같은 "동등성" 인터페이스를 구현하는 매개변수만 허용해야 합니다.
a
和 b
具有相同的确切类型,因此 v.Equal(u)
不是毫无意义的,而不是声明 equals(a, b any)
리플렉션을 사용하면
위 내용은 런타임에 일반 유형이 '비교 가능'한지 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!