我有以下變量series
:爲什麼我的Scala類型不匹配?
var series: List[FlotSerie] = List(
new FlotSerie() {
override val label = Full("Min")
},
new FlotSerie() {
override val label = Full("Max")
},
new FlotSerie() {
override val label = Full("Avg")
}
)
不幸的是,我得到一個編譯器錯誤下面的方法,這需要一個新的數據點和更新series
與基於新的數據和舊新List[FlotSeries]
系列。
def updateSeries(sample: Sample): List[FlotSerie] = {
series = series.map(serie =>
serie match {
case item if item.label == Full("Min") => {
new FlotSerie() {
override val label = item.label
override val data = (sample.timestamp.toDouble, sample.min) :: serie.data
}
}
case item if item.label == Full("Max") => {
new FlotSerie() {
override val label = item.label
override val data = (sample.timestamp.toDouble, sample.max) :: serie.data
}
}
case item if item.label == Full("Avg") => {
new FlotSerie() {
override val label = item.label
override val data = (sample.timestamp.toDouble, sample.avg) :: serie.data
}
}
}
)
}
Scala編譯器扼流圈上的重新分配,因爲它發現一個類型不匹配:
error: type mismatch;
found : Unit
required: List[net.liftweb.widgets.flot.FlotSerie]
series = series.map(serie => serie match {
我在做什麼錯在這裏?它似乎應該返回一個可以分配給series
的List [FlotSeries]。由於編譯器發現Unit
我想到的是如何foreach
總是返回Unit
,我可是match
運算符返回匹配的表現,而不是Unit
的最後一個值。
謝謝,亞歷克斯,錯誤類型不使其清楚,我認爲這個問題是不是與我的映射,但該方法的返回值。謝謝你提醒我一個任務返回Unit。我希望它返回分配的值! – pr1001 2009-11-05 18:20:19
我已經在那裏我希望它返回分配的值,但後來我完全停止使用VAR和功能編程案件,我更快樂:)原因很可能與避免做= VS ==錯誤,並有可能會在語言的其他部分放置一些語法限制。 – 2009-11-06 06:38:00