作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试实现 Iterable[String]
的一个简单子(monad)类,但我遇到了一些对我来说似乎有点奇怪的事情。我的代码如下:
class ItString[String] extends Iterable[String]{
override def iterator: Iterator[String] = new Iterator[String] {
def hasNext = true
def next = "/"
}
}
我的 IDE 提示它期待一个 String
但它实际上是 String
类型,并且在尝试编译时,它进一步揭示了问题是它需要 String
但文字实际上是 java.lang.String
类型。现在,我可以通过将其更改为 "/".asInstanceOf[String]
来解决此问题,但我想知道为什么 Scala 无法正确识别类型。
最佳答案
因为我可以编译以下内容:
class ItString extends Iterable[String] {
override def iterator: Iterator[String] = new Iterator[String] {
def hasNext = true
def next = "/"
}
}
我可以推断出您的问题在于写作:
class ItString[String] extends ...
发生的事情是 String
不是指类型 java.lang.String
,而是一个未知的参数化类型(如 T
或 A
)。因此,当您编写 [String]
时,这意味着将由实现类确定的一些未知类型 而不是 String
键入您想要的。
关于字符串字面值未被解释为字符串类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31527934/
1.字面常量 (1)字面意思是啥就是啥,看其表示就可以知道其值和类型。 (2)有值无名,一用来初始化变量,与一种字符相关联。 #include <stdio.h>int main()
我是一名优秀的程序员,十分优秀!