问题标签 [context-bound]

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 回答
306 浏览

scala - Scala 上下文边界

在 scala 中使用上下文边界,您可以执行以下操作

或者干脆

我如何表达在范围内Seq具有适当隐式HasBuild对象的任何元素的类型?如果没有太多的魔法和外部库,这可能吗?

Seq[WhatTypeGoesHere]- 我应该能够HasBuild为每个元素找到合适的

这显然不能编译:

0 投票
1 回答
956 浏览

scala - 使用上下文绑定时找不到隐式值

我正在使用以下用 Scala 2.11.8 编写的代码:

它成功编译。

如您所见,a: Acceptable[T]参数应该很容易转换为上下文绑定

但是在那之后,编译开始失败并出现错误:

找不到参数 e 的隐式值:app.Enc[Int]

为什么会这样?

更新:

我尝试-Xlog-implicits了编译器选项,编译日志给了我:

好的,我理解这个输出。但是为什么它在隐式参数的情况下起作用?

0 投票
1 回答
101 浏览

scala - 在 Scala 中,如何为具有使用不同上下文边界的函数的类创建特征

现在我想序列化/反序列化 Json 数据,有几个 json 库可供选择。但是,它们使用不同的上下文边界进行编码/解码,这使得很难为它们定义特征。

有没有办法在特征中定义写入/读取?

0 投票
1 回答
155 浏览

scala - Scala 嵌套隐式类型参数

你能解释一下T这个方法定义中的类型吗?这是来自加特林。我知道冒号用于上下文绑定值。在这里,我看到它们嵌套。是#为了什么?

0 投票
1 回答
73 浏览

scala - 可变参数的上下文绑定

几天前我开始学习Cats,我想appendOptionalMap[String, _: Show].

我从以下想法开始:

并像这样使用它:

我知道这种方法非常幼稚和直接,因为implicitly[Show[T]].show(value)实际上会查找Show[Any].

此外,我有一个想法接受HList上下文绑定,但我还没有找到任何例子。

另一种变体是创建许多重载方法(就像在许多库中所做的那样):

问题:有没有办法为可变参数函数定义上下文绑定?

0 投票
1 回答
1036 浏览

scala - 找不到 org.scalacheck.Arbitrary 类型的证据参数的隐式值

我试图使用random具有以下签名的方法:

在一个名为的案例类上Checking,但我得到了这个:

找不到 org.scalacheck.Arbitrary [com.organization.lambda.Checking] 类型的证据参数的隐式值

我知道这是由于上下文边界的一些问题,但我无法理解这一点并理解必须做什么。

0 投票
1 回答
93 浏览

scala - Scala - 方法类型参数

我试图理解 scala 编译器自动生成的一些代码,但我不知道要搜索什么。

我有以下课程:

反编译类文件后,f1 和 f2 方法的签名如下所示:

如您所见,这些方法有一个附加参数。我在哪里可以找到有关此方法类型参数符号F[_, _] 的一些文档:Arrow1

0 投票
1 回答
58 浏览

scala - 如何通过有界泛型解决隐式查找?

我有一系列 Foo 类:

我有一个类型类和所有 Foos 的实例:

我尝试从一个方法中获取类型类实例:

No implicits found for parameter e: CanBar[T]即使我导入了所有CanBar[Foo]实例,编译器也会抱怨。

我的假设是编译器正在寻找 T(它是 Any 或 Foo)并且没有找到任何东西。我是否正确,在这种情况下如何使它工作(没有宏)

0 投票
1 回答
59 浏览

scala - 在具有类型参数的函数中调用的类型类方法

我正在尝试在带有类型参数的函数中使用类型类方法。不幸的是,我无法让它工作。

当我尝试使用addRegisterInOut方法时,编译器会在以下代码中引发错误。

我明白了

我希望编译器仅在未定义隐式的类型上停止,但它似乎总是发生。

0 投票
1 回答
41 浏览

scala - 像“C:ClassTag:Manifest”这样的泛型类型是什么意思?

我发现了一些片段如下:

泛型类型的含义是C: ClassTag : Manifest什么?