问题标签 [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.
rust - 在 Rust 中,如果没有 'for MyStruct','impl MyTrait' 会做什么?
Rust 中的 Traits 允许 trait 方法的默认实现:您可以在内部编写一些实现trait MyTrait {...}
,稍后将使用它impl MyTrait for MyStruct
。
但是,您也可以编写 plain impl MyTrait
,这似乎不会改变程序的行为:
impl MyTrait
没有任何东西是什么for SomeType
?它编译时只有“死代码”警告,所以我想它对编译器有一些意义。但我不明白是否有办法调用它。
haskell - Arrow 库中“first”的实现
我不明白first
库中的实现。
first
似乎是用递归定义的***
——我看不到递归何时结束!?
和
first f
是(f *** id)
哪个是(first f >>> arr swap >>> first id...)
,新的first
将是另一个(*** id)
,依此类推...
swift - 为什么编译器看不到协议中的默认代码?
编辑:我已经重申并希望在这里澄清这个问题。现在我已经添加了解决方案。
我已经定义了一个函数(见foo()
附件示例)作为struct
s 采用 my protocol
. 它应用+
针对其他两个变量定义的运算符,这些变量本身采用其他变量protocols
并+
在其中一个协议中定义。变量使用associatedtype
s 输入。我收到消息:
二元运算符“+”不能应用于“Self.PointType”和“Self.VectorType”类型的操作数
如果我在我的内部实现该函数struct
(参见附件中的 bar())它可以工作,所以我确信我的 + 运算符确实有效。我的例子被缩减到在操场上工作所需的最低限度。只需删除中的注释LineProtocol extension
即可获得错误。在我看来,这Self.PointType
是 aPoint
并且Self.VectorType
是Vector
.
明确一点:我之所以使用associatedtype
s 是因为很多不同struct
的 s 都采用了示例中的三种协议中的每一种,所以我不能直接命名它们
改编自@Honey 建议的解决方案:将扩展名替换为:
c# - C# 8.0 - 不能使用默认接口实现
我最近读到 C# 8.0 有接口默认实现,所以我进入我的项目并尝试了它,但我遇到了一个错误。Target runtime doesn't support default interface implementation
. 有没有办法解决这个问题?
编辑
我正在使用Console
java - 默认接口方法的辅助函数
我需要合并一些辅助方法来辅助 Java 8 上的默认接口方法 - 以便更好地组织代码。
所以唯一可用的选择似乎是用'static'
- 来限定它们,从而让它们暴露在外面。
有没有更好的方法来实现这一点 - 迁移到 Java 9 不是一种选择。
rust - Rust 在专用版本中调用函数的默认实现
我在 Rust 中有一个特性,它为其功能提供了一些默认实现。
一些实现者扩展了这个特性并使用提供的默认值
现在我想要一个扩展特征行为的实现器,但有时仍使用默认实现。当然默认实现更复杂,我想遵循 DRY 原则。
这里MyTrait::say_hello(self);
立即在无限循环中调用专用函数。我没有找到任何方法来限定函数调用,以便调用默认实现MyTrait
。有什么方法可以实现这一点,还是我必须为这种情况创建一个代理函数(也将在我的 trait 的公共接口中)?
c# - C#如何将默认实现添加到覆盖另一个接口的接口
例如:
它给了我:
c# - C#如何在实现类中引用默认接口实现
考虑以下接口,默认实现为TestMethod
调用TestMethod
以下类将导致 StackOverflowException:
现在我明白为什么会这样了,但是有什么办法可以绕过它吗?类似于base.TestMethod()
引用类的实现接口之一?
我知道我可以重命名 TestInterface 中的方法并以这种方式在 TestClass 中引用它,但这会导致其他不需要引用默认实现的类出现问题。