问题标签 [default-implementation]

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 投票
0 回答
63 浏览

rust - 在 Rust 中,如果没有 'for MyStruct','impl MyTrait' 会做什么?

Rust 中的 Traits 允许 trait 方法的默认实现:您可以在内部编写一些实现trait MyTrait {...},稍后将使用它impl MyTrait for MyStruct

但是,您也可以编写 plain impl MyTrait,这似乎不会改变程序的行为:

impl MyTrait没有任何东西是什么for SomeType?它编译时只有“死代码”警告,所以我想它对编译器有一些意义。但我不明白是否有办法调用它。

0 投票
1 回答
94 浏览

haskell - Arrow 库中“first”的实现

我不明白first库中的实现。

first似乎是用递归定义的***——我看不到递归何时结束!?

first f(f *** id)哪个是(first f >>> arr swap >>> first id...),新的first将是另一个(*** id),依此类推...

0 投票
1 回答
195 浏览

swift - 为什么编译器看不到协议中的默认代码?

编辑:我已经重申并希望在这里澄清这个问题。现在我已经添加了解决方案。

我已经定义了一个函数(见foo()附件示例)作为structs 采用 my protocol. 它应用+针对其他两个变量定义的运算符,这些变量本身采用其他变量protocols+在其中一个协议中定义。变量使用associatedtypes 输入。我收到消息:

二元运算符“+”不能应用于“Self.PointType”和“Self.VectorType”类型的操作数

如果我在我的内部实现该函数struct(参见附件中的 bar())它可以工作,所以我确信我的 + 运算符确实有效。我的例子被缩减到在操场上工作所需的最低限度。只需删除中的注释LineProtocol extension即可获得错误。在我看来,这Self.PointType是 aPoint并且Self.VectorTypeVector.

明确一点:我之所以使用associatedtypes 是因为很多不同struct的 s 都采用了示例中的三种协议中的每一种,所以我不能直接命名它们

改编自@Honey 建议的解决方案:将扩展名替换为:

0 投票
1 回答
6899 浏览

c# - C# 8.0 - 不能使用默认接口实现

我最近读到 C# 8.0 有接口默认实现,所以我进入我的项目并尝试了它,但我遇到了一个错误。Target runtime doesn't support default interface implementation. 有没有办法解决这个问题?

编辑 我正在使用Console

0 投票
1 回答
410 浏览

java - 默认接口方法的辅助函数

我需要合并一些辅助方法来辅助 Java 8 上的默认接口方法 - 以便更好地组织代码。
所以唯一可用的选择似乎是用'static'- 来限定它们,从而让它们暴露在外面。
有没有更好的方法来实现这一点 - 迁移到 Java 9 不是一种选择。

0 投票
2 回答
522 浏览

rust - Rust 在专用版本中调用函数的默认实现

我在 Rust 中有一个特性,它为其功能提供了一些默认实现。

一些实现者扩展了这个特性并使用提供的默认值

现在我想要一个扩展特征行为的实现器,但有时仍使用默认实现。当然默认实现更复杂,我想遵循 DRY 原则。

这里MyTrait::say_hello(self);立即在无限循环中调用专用函数。我没有找到任何方法来限定函数调用,以便调用默认实现MyTrait。有什么方法可以实现这一点,还是我必须为这种情况创建一个代理函数(也将在我的 trait 的公共接口中)?

0 投票
1 回答
40 浏览

c# - C#如何将默认实现添加到覆盖另一个接口的接口

例如:

它给了我:

0 投票
1 回答
64 浏览

c# - C#如何在实现类中引用默认接口实现

考虑以下接口,默认实现为TestMethod

调用TestMethod以下类将导致 StackOverflowException:

现在我明白为什么会这样了,但是有什么办法可以绕过它吗?类似于base.TestMethod()引用类的实现接口之一?

我知道我可以重命名 TestInterface 中的方法并以这种方式在 TestClass 中引用它,但这会导致其他不需要引用默认实现的类出现问题。