我的代码:
import QtQuick 2.11
import QtQuick.Window 2.11
import QtQuick.XmlListModel 2.0
Window {
visible: true
width: 640
height: 480
XmlListModel {
id: videoListModel
source: "https://www.youtube.com/feeds/videos.xml?channel_id=UCupvZG-5ko_eiXAupbDfxWw"
query: "/feed/entry"
XmlRole { name: "title"; query: "title/string()" }
}
ListView {
orientation: ListView.Vertical
anchors.top: parent.top
model: videoListModel
delegate: Component {
id: videoDelegate
Text {
text: title
width: 200
height: 50
}
}
}
}
我的错误:
模式类型与预期类型不兼容,dound:Nil.type, 必需:列出[T]
我是Scala的新手,所以,请描述一下你的答案。
答案 0 :(得分:1)
tldr:将您的类命名为其他名称,让该方法接受第二个参数,即您要减少的List。
问题是您将类List
命名为Scala中类的名称。它本身实际上并不会破坏代码,但它可能会导致您对Scala List
或自定义List
是否意味着混淆。
然后您混淆了它并尝试使用您的自定义类,就像它是常规Scala List
一样。特别是尝试使用与Nil
和::
等内容进行模式匹配。这些仅适用于Scala List
,而非您的自定义。您当然也可以为那些使用自定义List
的代码编写代码,但是您仍然需要小心确定您所指的是哪一个,如果您选择这条路线,我建议您使用不同的名称。
更简单的解决方案是将类命名为其他内容,然后将Reduce更改为右侧,同时将常规List
作为参数。像这样:
abstract class MyClass {
def reduceRight[T](list: List[T], op: (T, T) => T): Either[String, T] = list match {