如何使用命名参数调用函数

时间:2019-03-22 17:21:46

标签: swift

    public func write<Query: GraphQLQuery>(data: Query.Data, forQuery query: Query) throws {
      try write(object: data, withKey: Query.rootCacheKey, variables: query.variables)
    }

如何调用此函数?几次尝试都给了我编译器错误:“调用中的参数标签不正确(具有'data:forQuery:',预期的'object:withKey:')”

我猜是新的快速参数。

2 个答案:

答案 0 :(得分:1)

这是通用功能,需要第二个参数(query)符合GraphQLQuery协议,并且需要关联的类型Data

我不知道该协议有哪些要求以及如何实现。因此,让我们假设:

protocol GraphQLQuery {
    associatedtype Data
}
struct MyQuery: GraphQLQuery {
    typealias Data = Int
}
let query = MyQuery()
try? write(data: 0, forQuery: query)

or

do {
    try write(data: 0, forQuery: query)
} catch { ... error handling }

所以现在要调用函数,我们需要传递查询和该查询能够使用的数据(在我的示例中为Int

答案 1 :(得分:0)

在我看来,您的函数中有一个未定义的参数“ forQuery”并不在寻找该函数被调用时要传递的任何值。

如上面的注释中所提到的,如何尝试调用该函数的示例将有助于增加该问题。对于任何希望帮助您回答问题的开发人员来说,信息都是一个很好的工具!

确保在调用函数时,所有参数都希望获得传递的值。示例:

public func write<Query: GraphQLQuery>(data: Query.Data, forQuery: pass in forQuery value here query: Query) throws {
      try write(object: data, withKey: Query.rootCacheKey, variables: query.variables)
    }