【问题标题】:Generic protocols on SwiftSwift 上的通用协议
【发布时间】:2019-04-01 17:06:41
【问题描述】:

我想在 Swift 上翻译一些 Kotlin 代码,但我遇到了问题。在 Swift 上编写这段代码的正确方法是什么?

interface Foo<T>{
    fun <F>foo(action: (T) -> Foo<F>): Foo<F>
}

【问题讨论】:

    标签: swift generics kotlin


    【解决方案1】:

    我认为您正在寻找的是这样的:

    protocol Foo {
        associatedtype T
        func foo<F>(action: (T) -> F) -> F where F: Foo
    }
    

    【讨论】:

    • 是的,你是对的,我的反应是急于求成,并没有注意到未使用的泛型;更新我的回复
    • 为什么不简单地func foo&lt;F: Foo&gt;(action: (T) -&gt; F) -&gt; F
    • 功能上是一样的;我将其保留原样,以防 OP 需要对函数使用 associatedtype 的任何其他约束
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    相关资源
    最近更新 更多