问题标签 [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 投票
1 回答
423 浏览

scala - 使用更高种类的类型访问上下文边界的类型构造函数参数

是否可以在上下文绑定中访问更高种类的类型构造函数参数?我希望定义一个采用更高类型的特征,并具有一个返回构造函数参数实例的方法。

这失败了,编译器错误抱怨上下文边界不能有两个类型参数,但我找不到另一种访问类型构造函数参数的方法?

0 投票
2 回答
258 浏览

c#-4.0 - 解决多重继承(对于预煮类)

我需要的是:一个有两个父母的班级,他们是ContextBoundObject另一个班级。
为什么:我需要访问ContextBoundOject来记录方法调用。
作曲有效吗?截至目前,否(除其他外,无法识别类型)。
还有其他方法可以做到这一点吗?是的,但不是那么自动化并且没有第三方组件(也许 T4 可以做到,但我不是专家)。

更详细的解释。

我需要扩展 System 类(其中一些已经MarshalByRefObject(它是 的父级ContextBoundObject)作为父级,例如ServiceBaseand FileSystemWatcher,而有些没有,例如Exceptionand Timer)来访问框架的一些内部工作,所以我可以记录方法调用(现在;将来可能会改变)。

如果我使用这种方式,我只需向要记录的对象添加一个类名,而不是向每个方法添加记录调用,但显然我不能这样做:

所以可以尝试通常的解决方案,接口,但是如果我调用 Run 如下:

使用假设的接口 IServiceBase 它不起作用,因为类型 ServiceBase 不能转换为 IServiceBase - 它不继承任何接口。除了例外,问题更严重:throw只接受从Exception.
反过来,产生一个 IContextBoundObject 接口,似乎也不起作用:日志记录机制不能通过方法工作,所以我不需要实现任何,只需要一个属性和一些小的内部类(并且继承自ContextBoundObject,而不是甚至从MarshalByRefObject,元数据实际上是相同的)。

从我所看到的,扩展 fromContextBoundObject将扩展类放在一个Proxy(可能是因为在这种方式中方法调用使用 SyncProcessMessage(IMessage) 并且因此可以被拦截和记录),也许有一种方法可以在没有继承的情况下做到这一点,或者可能有是可用于带有日志调用的周围方法(如 T4 文本模板)的预编译技术或后编译技术,我不知道。

如果有人想看看这个,我在我的程序中使用了自定义版本的 MSTestExtentions 来记录(方法调用的)。任何想法表示赞赏。可能需要更多解释,请问。

0 投票
1 回答
1216 浏览

scala - 由于递归隐式(上下文绑定问题?),spray-json 中的 NPE

也许我在 spray-json 中发现了一个错误。当我尝试获取具有自身类型字段的对象的 json 时,我得到空指针异常。示例是:

调用堆栈就是这个

Sooo 我试图自己修复它,但我对 Scala 的了解还不够强。NPE在尝试转换 inner 时发生在这里TestItem。此时的函数参数writenull

您能否向我解释一下为什么它不使用我的隐式代替?我在调试器中看到,而不是使用我的隐含write包含一些魔法字段的值,这些魔法字段会随着调用 chain 的深入evidence$x$y而改变。我不知道那是什么。我觉得这与上下文相关,但阅读相关章节并没有帮助。

0 投票
2 回答
143 浏览

scala - Scala 上下文绑定意外不起作用

我试图定义一个函数来检查通用 Seq 是否已排序。

我想出了这个:

此时,编译器会返回“没有为 A 定义隐式排序”。

我可以通过按如下方式分配 a 和 b 来解决此问题:

此时编译器会愉快地接受该函数。

我觉得好奇的是,以下实现是开箱即用的:

据我所知,唯一显着的区别是我不使用偏函数。

谁能解释这种行为?

0 投票
2 回答
4154 浏览

scala - 如何从 TypeTag 中获取 ClassTag,或同时获取两者?

我有一些这样的代码:

最后一行失败:

没有可用于 T 的 ClassTag

我认为TypeTag是比一个更多的信息ClassTag?我可以ClassTagTypeTag? 如果没有,是否有一些语法可以说T具有两个上下文边界——既TypeTagClassTag?或者,您将如何修复此代码?

0 投票
1 回答
449 浏览

scala - Scala“上下文绑定”比普通参数有什么优势?

我正在阅读应该像类型类一样工作的上下文边界和隐式参数。我看到的例子经常使用Ordering[T]. 就像是:

这是糖

所以在体内你可以做类似的事情

我以为我以前明白这一点,现在我画了一个空白……与简单地将事物传递给函数相比有什么好处。例如:

0 投票
2 回答
553 浏览

scala - 对 Scala 类型参数施加多个泛型类型约束

我想使用 Scala 的上下文绑定模式做以下事情:

这是一个多项式类,它要求系数是 a 中的元素Ring T。当将此多项式应用于元素(求值)时,参数的类型x必须是环,并且类型的元素T可以隐式转换为 type X。例如T = Double, X = SquareMatrix

如何在 Scala 中对泛型类型参数施加多个类型约束?

0 投票
1 回答
78 浏览

scala - Scala中是否可以有两个或多个上下文绑定类

我如何指定我需要一个 ClassTag 和一个 T 的排序?

例子 def sort[T: ClassTag <and> Ordering](future: Future[Seq[T]]): Future[Seq[T]]

0 投票
1 回答
346 浏览

scala - Scala:在第二个构造函数中显式指定上下文绑定

为什么允许这样做:

虽然这不是:

编译器消息:

Foo[O] 不带参数

有没有办法在构造函数中显式地提供上下文绑定?

0 投票
1 回答
100 浏览

scala - 自引用视图/上下文绑定

我实际上并不清楚以下是视图还是上下文绑定。也不清楚自引用方面(重新引用模型)在做什么;):

将不胜感激对“<:Model [M]”含义的解释。