在scala中指定了类型时键入不匹配

时间:2018-05-08 03:08:38

标签: scala rdd spark-graphx

我正在尝试使用以下代码在scala中使用GraphX

val vertexRDD: RDD[(VertexId, String)] = graph.vertices.filter({
        case (id, (str)) => {
            val c: Boolean = scala.util.Try(str.toInt) match {
                case Success(_) => false
                case _ => true
            }
        }
    })

此功能使用官方界面def filter(pred: Tuple2[VertexId, VD] => Boolean): VertexRDD[VD]

然而,它会引发type mismatch错误

[error]  found   : Unit
[error]  required: Boolean
[error]             }
[error]             ^

怎么可能?我已经将回报指定为Boolean,它确实是Boolean,我是对的吗?...

1 个答案:

答案 0 :(得分:2)

这个失败的原因是块的值是块中最后一个表达式的值,但遗憾的是块中的最后一个表达式是类型为function elementOccurs (item, list){ for(var i = 0; i < list.length; i++){ if(item == list[i]){ console.log("state is found"); return true } } return false } var status = elementOccurs(yourItem,list) 的声明。要解决此问题,您只需删除声明即可。

您还可以使用Microsoft.Maps.Events.addHandler(pin, 'click', () => { this.router.navigateByUrl('/dashboard');}); 并删除一些不必要的括号来简化您的代码

Unit