问题标签 [type-bounds]
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.
java - 为什么& SomeInterface> 编译,但没有>?
我不明白为什么 method2 不编译而 method1 编译。我正在使用带有 JavaSE 1.7 的 Eclipse,并且在方法 2 上出现以下错误:
此行有多个标记
Enum<T> 类型不是接口;它不能指定为有界参数
有界不匹配:类型 T 不是 Enum<E> 类型的有界参数 <E extends Enum<E>> 的有效替代品
c - 模运算符与零(re:arc4random_uniform 源)
发现自己正在查看 arc4random_uniform 源 ( http://bxr.su/o/lib/libc/crypt/arc4random_uniform.c )
我的问题与以下行有关(评论是他们的原始评论):
现在,我不是数学天才,但肯定 -N%N 总是等于零。所以为什么不写
scala - Scala 类型上限
我得到:
我的直觉表明这应该有效,因为T
它的类型上限比O
.
**** 编辑 ****
好的,让我们看看上面的例子。
超类A
提供方法距离。我想在类中使用findNN
该seq[B]
功能C
。distance
应该有效,因为它适用于A
根据提供的反馈,无法简化上述类型签名。
scala - Scala 中的类型推断和类型边界
考虑以下类:
现在我想创建一个包装器对象,它接受一个二进制函数Type
或其派生类型,让我们从:
Fct
我可以使用apply 方法实例化该类_+_
,但我无法使用Subtype
该类传递函数,这是预期的:
现在我们可以定义Fct
使用泛型和类型边界来接受子类型:
现在f2
按预期工作,但f1
不再有效,我不明白为什么:
是否有可以同时接受f1
and的语法f2
?
编辑
(回复 mz)有没有办法解决工厂的差异问题?就像是:
scala - scala 类型的上限和下限
考虑以下层次结构:
我想编写一个只接受类型C2
和C3
. 为此,我想到了以下几点:
我期望以下行为
问题是用 调用它时C4
,我不想允许,但编译器接受。我理解这C4 <: C2
是正确的,C4
可以看作是C3
. 但是在指定 bound 时[C >: C3 <: C2]
,我希望编译器找到一个C
同时尊重两个边界的,而不是一个一个。
问题是:有什么方法可以实现我想要的,如果没有,编译器是否试图避免与此不一致?
编辑:从答案中我意识到我的假设是错误的。C4
总是满足C >: C3
,所以这两个界限确实受到尊重。我的用例的方法是C3 <:< C
.
scala - 编译器似乎忽略了类型细化中的类型绑定
下面代码中的类型细化似乎表明路径相关类型vt.ValueT
包括this.type
:
但 Scala 编译器(版本 2.11.2)说:
有什么理由在这里推断this.type <: vt.ValueT
是非法的吗?还有另一种方法可以告诉编译器它需要知道什么吗?
我已经尝试将类型改进放在vt
. 结果类型为volatile的编译器对象。也许这就是问题的线索。
细化{ type ValueT = this.type }
生成相同的错误消息。
scala - 使用来自 Scala 的 Quartz 的类型绑定问题
我正在尝试重新安排工作,并且我已经像这样定义了我的方法:
这给了我以下错误:
错误:(33, 55) 类型参数 [org.quartz.SimpleTrigger] 不符合方法 withSchedule 的类型参数边界 [SBT <: ?0] val up = oldTrigger.getTriggerBuilder.withScheduleSimpleTrigger.build()
现在看签名withSchedule
:
T
是类的类型参数,withSchedule
它看起来像class TriggerBuilder<T extends Trigger>
. soT
应该由返回的实例的类型参数定义getTriggerBuilder
,这里应该是TriggerBuilder<SimpleTrigger> getTriggerBuilder()
,T
a也是SimpleTrigger
。在Trigger
接口getTriggerBuilder
中是这样定义的: TriggerBuilder<? extends Trigger> getTriggerBuilder()
。simpleSchedule
返回一个SimpleScheduleBuilder
(扩展ScheduleBuilder<SimpleTrigger>
)。
我在这里的理解是SBT
(即SimpleTrigger
,如果我们查看错误)应该扩展一个扩展类Trigger
。这里的问题是我们有SimpleTrigger <: SimpleTrigger
。完全不确定我读对了。
如果我不输入withSchedule
,我最终会遇到同样的错误,再加上这个:
错误:(37, 46) 类型不匹配;发现: org.quartz.SimpleScheduleBuilder 需要: org.quartz.ScheduleBuilder[SBT] .withIntervalInMinutes(randomInterval).repeatForever)
有人可以帮我吗?作为记录,官方 Quartz 示例也没有编译(同样的错误)。
rust - 将特征绑定添加到自身时意味着什么?
在 Rust 文档中,我从Option中看到了类似这样的实现:
界是什么Copy + Copy
意思?它只是一个文档怪癖吗?
java - 类型边界:传播具有多个边界的参数
考虑以下(不可更改的)API:
现在我编写了一个接受一般的类,Foo
但如果该参数也是 a Bar
,我想doFoo
在某些方法中另外执行:
的示例用法Holder
:
正如代码注释中提到的,我在 Holder 类中调用 doFoo() 时遇到问题,因为当时不知道可以扩展Foo
和实现的确切类型Bar
,所以我不能简单地将它转换为这样的类型。有没有办法在不改变 和 的界面的情况下解决这个Holder
问题?Foo
Bar
scala - 如何检查某些类型是否确认 Scala 宏中的泛型类型边界?
我在某些课程中有以下方法:
我正在使用 Scala 宏处理该方法。此方法的提取类型参数m.typeParams
打印为type G <: GenericTrait
. m
在哪里MethodSymbol
。
我如何测试其他类型是否符合这种类型的界限?例如,这不起作用: