Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在scala中已指定类型时,类型不匹配_Scala_Rdd_Spark Graphx - Fatal编程技术网

在scala中已指定类型时,类型不匹配

在scala中已指定类型时,类型不匹配,scala,rdd,spark-graphx,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 ca

我试图在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]

但是,它会抛出一个
类型不匹配
错误

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

怎么可能呢?我已经将返回值指定为
布尔值
,它实际上是
布尔值
,对吗?..

失败的原因是块的值是块中最后一个表达式的值,但不幸的是,块中最后一个表达式是一个声明,其类型为
Unit
。要解决此问题,只需删除声明即可

您还可以使用
Try.issucess
并删除一些不必要的括号来简化代码

val vertexRDD: RDD[(VertexId, String)] = graph.vertices.filter{
    case (_, (str)) =>
        scala.util.Try(str.toInt).isSuccess        
}

您已将bool分配给
c
,分配将返回
Unit
。若要返回bool,请删除赋值或将
c
放在最后一行以返回它。@Shaido:为什么要以注释的形式给出答案?现在问题显示为未解决,直到有人重复您的评论作为答案。@userunknown我投票以“简单的印刷错误”结束该问题,但如果该问题仍然未解决,我可能会在稍后添加它作为答案。印刷错误?但事实并非如此。