swift - 检查泛型类型是否是 Swift 中的函数类型

标签 swift function generics types

我定义了一个泛型类,如下

class A<T:Any>{
   var value:T? 
}

我想知道如何将 T 限制为函数类型,并可以在 A 类中编写类似 value() 的代码。

let a = A<()->()>()

最佳答案

我遇到了类似的问题,我最终是这样解决的:

首先,我定义了一个泛型类型,表示一个接受单个参数和返回值的函数:

typealias Monad<A, R> = (A) -> (R)

然后,我定义了我的类,以采用输入类型的泛型类型参数。就我而言,传递的每个函数都将返回 void,因此我不需要两个类型参数。

class HoldsMyCallback<A> {
    let callback: Monad<A, Void>

    init(callback: @escaping Monad<A, Void>) {
        self.callback = callback
    }
}

...

let funcKoozie = HoldsMyCallback<Int> {
    print("keep my \($0) function cold")
}

funcKoozie.callback(1)

关于swift - 检查泛型类型是否是 Swift 中的函数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39972601/

相关文章:

ios - 嵌套的 UIStackView 不对齐。我该如何对齐它们?

ios - 在 MVVM 中传回数据

swift - MKDirections/calculateDirectionsWithCompletionHandler 在 Swift 2.0 中不再工作

Swift/SpriteKit 许多对象之间的碰撞检测

c - 可以使传递的指针为空的函数

function - 如何在 Vim 函数中模拟按键?

c++ - 函数括号内的分号?

Java 8 泛型 : Reducing a Stream of Consumers to a single Consumer

generics - 使用通用函数不适用于使用 jackson 加载 YAML 列表

java - 如何从具有泛型的类访问.class?