【发布时间】:2020-06-12 12:41:11
【问题描述】:
我是swift编程语言的新手,我的背景是.NET开发,我想知道在swift语言中是否有任何类似于C#的IEqualityComparer的协议(接口)或抽象类?
注意:我正在尝试开发 SDK(我已经用 C# 编写并尝试转换为 Swift),它有一个可以在泛型类型中使用的接口。接口有一个使用IEqualityComparer的方法。
最好的问候。
【问题讨论】:
-
您应该详细说明您的情况:您为什么需要这个?在 Swift 中执行此操作的最佳方法可能会有所不同,具体取决于您使用它的目的。
-
@Sweeper 我正在尝试开发 SDK(我已经用 C# 编写并尝试转换为 Swift),它具有可以在泛型类型中使用的接口。接口有一个使用 IEqualityComparer 的方法。
-
@bkulaksiz 请记住,语言的不同之处不仅仅是它们对同一组元素的特定拼写。虽然 C# 和 Swift 相对相似,但“获取用 X 编写的程序中的每个元素,在 Y 中找到最接近的对应物”的一般方法几乎总是以糟糕的 Y 代码告终。
-
IEqualityComparer<T>就像 Java 的Comparator<T>。看到这个答案:stackoverflow.com/a/45742746/3141234 -
通用接口通常不能很好地转换为 Swift。虽然
IEqualityComparer可以转换为闭包类型(T, T) -> Bool(假设您不需要哈希码),但我不确定您的SDK 中的通用接口。我建议你重新设计整个东西。
标签: c# swift asp.net-core generics iequalitycomparer