- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是 Scala REPL 中的一个简单实验:
scala> trait A; trait B extends A; trait C extends B
defined trait A
defined trait B
defined trait C
scala> trait TC[T]
defined trait TC
scala> trait TC2[T <: B]
defined trait TC2
scala> class Test[TC[T]]
warning: there was one feature warning; re-run with -feature for details
defined class Test
scala> new Test[TC]
res1: Test[TC] = Test@6f195bc3
scala> new Test[TC2]
<console>:11: error: kinds of the type arguments (TC2) do not conform to the expected kinds of the type parameters (type TC) in class Test.
TC2's type parameters do not match type TC's expected parameters:
type T (in trait TC2)'s bounds <: B are stricter than type T's declared bounds >: Nothing <: Any
val res2 =
^
<console>:12: error: kinds of the type arguments (TC2) do not conform to the expected kinds of the type parameters (type TC) in class Test.
TC2's type parameters do not match type TC's expected parameters:
type T (in trait TC2)'s bounds <: B are stricter than type T's declared bounds >: Nothing <: Any
new Test[TC2]
^
TC2's type parameters do not match type TC's expected parameters
会出现问题,即
type T (in trait TC2)'s bounds <: B are stricter than type T's declared bounds >: Nothing
?
最佳答案
正如我在上面的评论中所指出的,TC
在Test
的类型参数列表中(并在错误消息中)不是 TC
你之前定义了几行——这是一个新的类型构造函数参数,它隐藏了特征 TC
.
(作为旁注,我强烈建议不要隐藏类型参数。在值级别隐藏变量可能会令人困惑,但隐藏类型参数几乎总是混淆的秘诀。)
类型构造函数参数在规范的 4.4 节中讨论。从该部分:
A type constructor parameter adds a nested type parameter clause to the type parameter... The above scoping restrictions are generalized to the case of nested type parameter clauses, which declare higher-order type parameters. Higher-order type parameters (the type parameters of a type parameter t) are only visible in their immediately surrounding parameter clause (possibly including clauses at a deeper nesting level) and in the bounds of t.
T
这是这些高阶类型参数之一。它可以是有界的(就像任何其他类型参数一样),但不是。这就是导致错误的原因:您试图提供一个类型构造函数来约束其类型参数(
TC2
)作为不共享约束的类型构造函数参数的值(实际上没有任何限制)。
trait Foo[X[_]] {
def create[A]: X[A]
}
object ListFoo extends Foo[List] {
def create[A]: List[A] = Nil
}
trait MyIntOptionThingy[A <: Option[Int]]
Foo[MyIntOptionThingy]
因为
MyIntOptionThingy
的类型参数约束比
X
的类型参数更严格在
Foo
的类型参数列表。如果您考虑一下,这是有道理的:我将如何定义
create
对于任何
A
,当只有
A
s 适用于
MyIntOptionThingy
是
Some[Int]
,
None.type
, 和
Option[Int]
?
关于scala - 错误,高级类型 Scala : type arguments do not conform. 类型 T 的边界比类型 T 的声明边界更严格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27800502/
我需要创建一个类型安全的弱引用数组 一个包含“类型安全”弱引用并且可以是数组元素的结构: public struct WeakRef: Hashable { public weak var r
假设我有这个 Swift 类: class Foo: NSObject, NSCoding { var stringMember: String var intMember: Int
谁能解释一下,下面的例子有什么问题?为什么会抛出 StackOverflowError 异常? (s/def ::tag keyword?) (s/def ::s string?) (s/def ::
啊啊!尝试使用我的神经网络进行计算时,我不断收到以下错误: > net.compute matrix.train1 (Intercept) survived pclass sexmale
我在下面的行中面临警告 此警告在更改以下行后出现 @interface BDSAppDelegate : UIResponder 到 @interface BDSAppDelegate : UIRe
我正在尝试实现 git 项目 XLPagerTabStrip . 根据项目,每个 Controller 必须: Every view controller provided by PagerTabSt
clojure.spec.alpha API 有一个名为 conformer 的宏有这样的描述: Usage: (conformer f) (conformer f unf) takes
iPhone开发中的“符合”是什么意思?这个词被广泛使用,但我找不到令人满意的定义。 假设我们有 3 个类别 - A、B 和 C 如果A继承B&如果A符合C 这是什么意思? 另外,为什么大多数类、协议
我最近刚刚遇到“弱一致性”这个术语(在 Stack Overflow 用户 retronym 对 How to set up implicit conversion to allow arithmet
我在我的一个 MVC 项目中使用 ConfORM Nhibernate。并且有一对多映射的问题。 IEnumerable domainEntities = this.GetDomain
如何对两个数组进行逐元素算术运算在第一个维度上是一致的,但还有一个额外的维度? 示例,将数组 a (3 x 3 x 2) 乘以数组 b (3 x 3): a a * b 要使其工作,您必须将数组 b
我是 swift 新手,并按照教程了解更多信息。 在下面的代码中,我定义了自定义运算符( Bool { for cardValue in valueArray { if lhs
我有来自 here 的 FAA 剖面图.每个包都包含相关图表的 .tif、描述图表的 .htm 文件和 .tfw 世界文件。 map 投影为朗伯共形圆锥投影。 我正在开发一个 C# 应用程序,它需要能
当我在脚本中调用下面的函数时,我会看到一个弹出对话框来执行一些说明。 这是我的示例代码: function updateStatus(instrxnID){ exporter.
我试图通过注入(inject)适应 URLSession 和 URLSessionDataTask 协议(protocol)的对象来测试我自己的类。我正在扩展 NSURLSession 和 NSURL
这个问题在这里已经有了答案: Fatal error: Dictionary does not conform to Decodable because Any does not conform t
我想在我的一个代理类中管理所有位置代码。由于该类(class)是从头开始构建的,而不是构建在 UIView 上的或继承 NSObjectProtocol 的类似类,它会抛出错误“不符合协议(proto
无法理解为什么我的类不符合 Codable请注意,在我的例子中,我不需要实现方法encode 和decode。 public class LCLAdvantagePlusJackpotCache: C
我是 IOS swift 开发新手。我曾经使用以前的 Xcode 6 beta。 我已经下载了 Xcode 6.0.1 但我无法让它工作 Xcode Version: 6.0.1 当我尝试运行示例时,
以下 Scala 声明是可以的: trait Base[B y) then x else y 这相当于将 Ordering(与 java.util.Comparator 相同)传递给函数。确实,宣言
我是一名优秀的程序员,十分优秀!