问题标签 [implicit]

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 投票
3 回答
2412 浏览

scala - 泛型特征的隐式转换

我正在实现一个数据结构,并希望用户能够使用任何类型作为键,只要他提供了一个合适的键类型来包装它。我有这种键类型的特征。这个想法是从基类型到键类型进行隐式转换,反之则(实际上)只使用基类型。特征如下所示:

呼叫站点代码可能如下所示:

计划是类型的值K应该隐式转换Key[K]为排序的值,或者应该分别隐式使用排序Key[K],所以一切都应该解决。当然,没有办法base2key在 trait 本身中实现隐式。或者是否存在,也许使用隐式传递的类清单?考虑到这一点,我找不到任何参考资料。

是否有可能以某种方式静态断言任何类型扩展Key[T]都将带有隐式转换T => Key[T]?可悲的是,伴生对象不能有抽象方法。

假设这可行,整个企业是否可行,或者所述用例是否需要多个链接的隐式转换?(正如我所读到的,链接不会发生。)

附录:Node(key : K, ...)有了上面的定义,我可以通过 using 对(下K <% Key[K])的序列进行排序sortWith(_.key <= _.key),但不能使用sortBy(_.key). 因此,显然,从Kto的转换是Key[K]隐式发生的,即使我从未在任何地方声明它,但没有OrderingonKey[K]隐式可用。这里发生了什么?

0 投票
2 回答
288 浏览

scala - 关于类型类的问题

我需要定义一个类型类Field,如下所示:

类型类Numeric还提供方法zeroone.

我希望每个有Numeric实例可用的类都可以在Field需要具有实例的类的任何地方使用。例如,以下应该有效:

您能否建议如何实现这一目标?我尝试了以下但没有奏效:

0 投票
5 回答
4827 浏览

c++ - 带有隐式参数、前向声明、C++ 的模板

有一个带有隐式参数的模板类声明:

列表.h

我尝试在不同的头文件中使用流动的前向声明:

分析.h

但 G++ 显示此错误:

如果我使用没有隐式参数的前向声明

编译器不接受这种结构

分析.h

并显示以下错误(即不接受隐式值):

更新的问题:

我从模板定义中删除了默认参数:

列表.h

使用类 List 的第一个文件具有参数属性的隐式值的前向声明

分析1.h

第二类使用类 List WITH 前向定义使用隐式值

分析2.h

第二类使用类 List WITHOUT 前向定义使用隐式值

分析2.h

0 投票
7 回答
8334 浏览

c++ - 隐式模板参数

以下代码在 Xcode 中生成编译错误:

error: missing template arguments before 'MyFoo'

更改Foo MyFoo(123);Foo<int> MyFoo(123);解决问题,但编译器不应该能够找出适当的数据类型吗?

这是编译器错误,还是我误解了隐式模板参数?

0 投票
3 回答
267 浏览

perl - 为什么 Perl 中的“导入”子例程不大写

我好奇。大多数 Perl 隐式调用的子例程必须全部大写。TIESCALAR, DESTROY 等。事实上perldoc perltoot

如果构造函数可以有任意名称,那么为什么不使用析构函数呢?因为虽然显式调用了构造函数,但没有显式调用析构函数。销毁通过 Perl 的垃圾收集 (GC) 系统自动发生,这是一个快速但有点懒惰的基于引用的 GC 系统。为了知道调用什么,Perl 坚持将析构函数命名为 DESTROY。Perl 关于调用析构函数的正确时间的概念目前还没有明确定义,这就是为什么你的析构函数不应该依赖于它们何时被调用的原因。

为什么 DESTROY 全部大写?Perl 有时使用纯大写的函数名作为约定,以表明该函数将由 Perl 以某种方式自动调用。其他被隐式调用的方法包括 BEGIN、END、AUTOLOAD,以及绑定对象使用的所有方法,在 perltie 中进行了描述。

那么为什么import子程序要小写呢?有没有人对此有很好的见解?

0 投票
1 回答
722 浏览

f# - 将重载的构造函数添加到隐式 F# 类型

我使用隐式类型构造创建了以下类型:

但是现在我需要将以下重载构造函数添加到此类型(此处为 C#):

我遇到的问题是,似乎隐式类型中的任何重载构造函数都必须有一个参数列表,它是第一个构造函数的子集。显然我要添加的构造函数不符合这个要求。有没有办法使用隐式类型构造来做到这一点?我应该以哪种方式做到这一点?我对 F# 还很陌生,所以如果你能用你的变化来展示整个类型,我将不胜感激。

提前致谢,

鲍勃

PS如果您有任何其他建议可以使我的课程更加实用,请随时发表评论。

0 投票
1 回答
297 浏览

wcf - 是否有一个属性会隐式假设具有 DataContract 的类的所有成员都是数据成员?

不必为每个成员指定 [DataMember],是否有一种属性可以假设它是一个数据成员?

我有一堂课,里面有很多成员,我必须将它们序列化为 Web 服务。

0 投票
1 回答
319 浏览

c - 函数的 C 隐式声明

我在 Linux 和 gcc 4.2.3 上。

对于下面的代码部分,lp_parm_talloc_string 函数被隐式调用,然后定义:

对于这部分,出现以下错误:

如何告诉编译器允许这种情况?

0 投票
2 回答
5363 浏览

scala - 为什么 Option 的 orNull 方法有这个多余的隐式参数?

我想知道这里的原因是什么(implicit ev: Null <:< A1)

不会

考虑到它甚至似乎不适用于像这样的值类型就足够了

做?

Option源代码

0 投票
11 回答
21708 浏览

scala - Scala 中的类型类有什么用?

正如我从这篇博文中了解到的 那样,Scala 中的“类型类”只是用特征和隐式适配器实现的“模式”。

正如博客所说,如果我有 traitA和适配器,B -> A那么我可以调用一个函数,该函数需要 typeA的参数,并带有 type 的参数,B而无需显式调用此适配器。

我发现它很好,但不是特别有用。您能否提供一个用例/示例,说明此功能的用途?