问题标签 [associated-types]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
324 浏览

rust - 使用一个函数定义一个特征,该函数返回与一个参数具有相同生命周期的关联类型

我正在尝试使用一个函数定义一个特征,该函数返回与一个参数具有相同生命周期的关联类型。

概念上类似于以下内容(不起作用:)lifetime parameter not allowed on this type [Self::Output]

我在 Stack Overflow 和 Internet 上发现了几个关于关联类型生命周期的问题,但似乎都没有帮助。一些人建议定义整个特征的生命周期:

但这也不起作用:它可以编译,但是以下函数无法编译:

给出错误:

我应该如何定义特征以便它按照我想要的方式运行?

0 投票
2 回答
1009 浏览

swift - 检查两个对象是否实现了 Swift 协议及其关联类型

我有一个 Swift 3 项目,我在其中声明了一个具有如下关联类型的协议:

我想检查两个对象是否实现ViewModelContainer以及它的关联类型ViewModelType是否以“通用”方式进行分配。

理想情况下,我想做这样的事情:

但我不能container投到ViewModelContainer

协议“ViewModelContainer”只能用作通用约束,因为它具有 Self 或关联的类型要求


我目前的解决方法是直接回退到特定的类及其关联类型,但这会使我的代码非常冗长且容易出错:

我尝试使用 generic ,但由于Objective-C 无法识别通用 Swift 类,因此无法在 Storyboard 中使用,因此UIViewController卡住了。

0 投票
0 回答
1210 浏览

swift - 没有关联类型,但是:协议只能用作通用约束,因为它具有 Self 或关联类型要求

即使我没有associated type,我也会收到此错误:

协议只能用作通用约束,因为它具有 Self 或关联的类型要求

代码如下。我定义了一个protocol被调用Board的,然后,在另一个protocol(被调用Rules的)中我创建了一个类型的参数Board。那是我得到错误的时候。

没有关联的类型,所以我不知道编译器在说什么......

我到底做错了什么???

0 投票
2 回答
2352 浏览

swift - 在 Swift 中将抽象类型转换为具体类型

我正在尝试为我的应用程序制作数据模型。这是场景:

我的应用程序有包含客户信息的客户模型,还包含他/她的付款来源。API 为我提供了两种支付来源:银行账户,它们具有完全不同的字段。

所以,这是我的问题,我想要一个抽象类型,即 PaymentSource,然后在每个 PaymentSource 中都有一个函数来返回转换为它的类型的对象。一些我是如何键入擦除的。

我需要将我的抽象类型放在一个盒子中并将其用作具体类型(AnyPaymentSource)。

所以,我做了如下:

Customer给我以下描述错误:

不支持使用“PaymentSource”作为符合协议“PaymentSource”的具体类型

我在哪里做错了?

0 投票
1 回答
2090 浏览

swift - 协议“BaseListPresenter”只能用作通用约束,因为它具有 Self 或关联的类型要求

我正在定义一个具有某些功能和变量的协议

现在,我想在课堂上使用它:

上面说的有错误:协议'BaseListPresenter'只能用作通用约束,因为它具有自我或相关类型要求

现在,我定义 X 的子类:

我已经通过创建 UsersPresenter 和 RoomsPresenter实现了解决方案(协议只能用作通用约束,因为它具有 Self 或 associatedType 要求)。但是,我想创建 BaseListPresenter 类型变量,它将在 X (UIViewController)中采用不同类型的值;一次 Room 和下一次 User 取决于 X 的子类。

我该如何解决这个问题并根据需要使用?

0 投票
1 回答
53 浏览

swift - 从任何使用关联类型的协议推断泛型

我正在尝试使此代码正常工作

originalItems[Any],我的功能是

我如何TAny知道SectionRowRepresentable具有关联类型的事实中推断出Identity

0 投票
1 回答
927 浏览

swift - 使用通用关联类型扩展协议

假设我们有一个协议定义为:

而且我还有一个枚举(典型结果)定义为:

现在我想为PATwhen Elementis添加扩展,Result<Value>但编译器无法确定Value因此触发编译错误,指示“引用泛型需要参数”。

这是扩展的代码:

0 投票
2 回答
728 浏览

swift - Swift 3:从非命名类型继承

我有以下 SSCI:

我想这样使用:

但是编译失败,报错:

从非命名类型 '(`Self`.Bar)' 继承

上面代码片段中的代码,第二种类型的错误。

(Bar) -> Void当我使用and时,这也无法编译(Foo.Bar) -> Void


可悲的是,谷歌搜索并没有得出任何有用的结果。

有谁知道这个错误是什么意思,我做错了什么,以及如何纠正它?

0 投票
1 回答
448 浏览

ios - Swift 3:无法使用类型(通用)的参数列表调用(协议方法)

鉴于此协议:

而这个实现:

我不明白为什么我会收到此错误消息

无法使用“(T)”类型的参数列表调用“updateValuesWith”

需要一个“(TE)”类型的参数列表

上线values[oldIndex!].updateValuesWith(newElement)

经过一些徒劳的研究,我确信我一定错过了一些非常基本的东西,但仍然无法弄清楚到底是什么。

请赐教好吗?

0 投票
1 回答
52 浏览

swift - 泛型、关联类型和等价的问题

我制作了一个虚拟项目来测试泛型和相关类型。

这是一个协议

这是一堂课

所以这不能编译,contains这是错误:Cannot invoke contains with an argument list of type T

不知道如何解决这个问题,感谢您的帮助!