繁体   English   中英

采用泛型类型的闭包?

Closure that takes a generic type?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

使用以下完成处理程序代码,为什么它会给我关于completionClosure类型的错误?

enum ModelSerializerError: Error {
    case readjson(String)
    case writejson(String)
    case writeFirebase(String)
    case readFirebase(String)
}

enum ModelSerializerResult<T> {
    case success(T)
    case failure(ModelSerializerError)
}

static func serializeToFirebase<T>(value: T.Type, path: String, completion: @escaping (ModelSerializerResult<Void>) -> Void) where T: Encodable { ... }

// Later in some function...

let handleError : (Error) -> () =
    { error in
        print("Error: \(error)")
    }

let completionClosure : (ModelSerializerResult) -> () =
    { result in // Cannot convert value of type '(_) -> ()' to specified type '(ModelSerializerResult) -> ()'
        switch result {
        case .success(let val): ()
        case .failure(let error): handleError(error)
        }
    }

serializeToFirebase(value: MyClass.self, path: path, completion: completionClosure)
1 个回复

如果您不熟悉闭包语法,这可能会有点棘手。 在这个例子中,我错过了泛型。 换行:

let completionClosure : (ModelSerializerResult) -> () =

let completionClosure : (ModelSerializerResult<Void>) -> () =
1 接受通用 arguments 的关闭

是否可以接受闭包作为 function 参数,其中闭包具有通用类型 arguments? 这就是我想要这个的原因: 我有以下(简化)function: Request是一个枚举变体。 如示例所示: Request枚举的变体需要send才能被构造(有些需要额外的参数)。 我想将创建combined_ ...

2021-01-03 23:45:41 0 76   rust
2 通用类型的闭包参数 - 异常

在下面的代码中,为什么Groovy似乎忽略了方法barMany提供的closure参数的泛型类型声明: 更新 :Groovy版本:2.4.5 JVM:1.7.0_80供应商:Oracle Corporation操作系统:Linux 更新所以我之前没有注意到这个奇怪的错误 - org ...

3 存储具有通用类型的闭包

我正在为具有带有闭包的func的结构编写测试,该闭包又具有Result&lt;ModelProtocol&gt;的子参数。 但是,当我为我的结构编写模拟程序时,它拒绝存储以&lt;T&gt; != &lt;ModelProtocol&gt;的闭包。 反过来这是正确的,因为这是通用类型。 ...

2017-11-20 12:39:40 2 176   ios/ swift
4 定义用于闭包的通用类型

这个问题已经在这里有了答案: 泛型作为快速关闭的参数 2答案 我想定义一个用于闭包的通用类型,该闭包定义为类的实例变量。 我想传入一个通用类型的数组,并确保输出的相同类型与传入的类型相同。我已经这样写了(使用Swift 2.0),但它没有构建: 有任何想法 ...

5 根据输入参数返回通用闭包类型

我有名为APIManager的结构。 该结构可以调用一些API并返回其值。 它是这样组织的: 如您所见,很多代码都可以重用于创建一个名为call(_ api: API.Type) ,但是问题出在success块中,因为每种方法的代码都不同。 如何获得如下结果? 其中将使用基 ...

6 Swift中闭包的通用类型约束

我正在尝试创建一个通用类,在该类中必须确保类型T是可解码的。 我有以下代码: 错误是“ Foo does not conform to protocol Decodable ”。 有任何想法吗? 更新:这是我解决问题的方法: ...

2018-12-08 15:17:21 0 34   swift
7 定义可选的通用闭包参数的类型

我想创建一个接口,该接口可以使用Result类型中使用的通用和非通用参数来调用。 该API如下所示: 但是,当我尝试调用taskPreparation API时,将onTyplessComplete指定为nil 我收到错误 无法推断通用参数“ T”。 我了解,我必须指定通用参数的类 ...

8 用具体类型调用通用闭包

是否可以使用带有具体结构的具体类型来调用泛型函数? 这里是我想做的一个小例子: 我无法摆脱通用参数V因为要解决的实际问题更多。 此外,我无法创建包装特征,因为有时我的签名较弱,有时f需要更多特征。 ...

9 强制规范通用闭包类型

通常,如果您在Closure中未能指定泛型类型参数,则不会引发错误。 这与许多其他语言(包括TypeScript)不同。 闭包会将类型视为“未知”类型,通常将其忽略。 (可以设置编译器标志以使其抱怨未知类型,但是只能在全局范围内设置它们,并且通常太吵而不能真正使用。) 我有一个Clo ...

10 链式通用类型快速推断闭包

我正在努力地想出如何创建像这样的通用接口或类的概念。 因此,要使其正常工作,实际上是一个函数数组,该函数将其返回值传递到下一个函数的参数列表中。 假设每个函数闭包都以它来自的函数命名,即 那么您就可以像这样调用它们,以确保您传递正确的值。 lastInTheChain( ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM