Scala类型与基础类型不匹配

Scala类型与基础类型不匹配,scala,Scala,我正在编写将Set[Tuple2[String,String]转换为String的方法,反之亦然。 我正在将字符串值保存为v1、v2、v3、v4、v5、v6 为了填充集合我将字符串拆分为“,”,为了提取值,我尝试将每个值拆分为“#”,但我收到了 类型不匹配:找到:x.type(与基础类型数组[String] 我尝试使用的代码是 val x = overwriters.split("#") for(tuple <- x) { tuple.split(",") } val x=overw

我正在编写将
Set[Tuple2[String,String]
转换为
String
的方法,反之亦然。
我正在将字符串值保存为v1、v2、v3、v4、v5、v6
为了填充
集合
我将字符串拆分为“,”,为了提取值,我尝试将每个值拆分为“#”,但我收到了

类型不匹配:找到:x.type(与基础类型数组[String]

我尝试使用的代码是

val x = overwriters.split("#")
for(tuple <- x) {
  tuple.split(",")
}
val x=overwriters.split(#)
for(元组)
这将以更惯用的方式实现同样的效果。

tuple.split(“,”
返回两个元素的数组。您需要将其转换为tuple

val overwriters ="v1,v2#v3,v4#v5,v6"              
val x = overwriters.split("#").toSet
for(tuple <- x) yield {
  val t = tuple.split(",")
  (t(0),t(1))
}    
val overwriters=“v1,v2#v3,v4#v5,v6”
val x=覆盖器。拆分(“#”)到设置

for(tuple)什么是overwriters?是字符串还是字符串数组?你没有做一个yield,所以你的
for
语句没有任何有用的结果。另外,请发布一个完整的示例,如
val overwriters=“5,6#7.8”;val x=overwriters.split(#);for(由于某种原因,元组可以在scala控制台上工作,但也不能在工作表中的sbtWorks上编译。因此,我认为还有更多的原因。它们是不同的scala版本吗?我使用了另一个方向,使用了不同的结构。有趣的是,为什么第一种方法不起作用第一种方法不起作用,因为您的
拆分
返回一个
数组
,如@LRLucena所述。您可以使用此答案将这些
数组
转换为
元组
。甚至可以使用
覆盖器.split(“#”).map{x=>val数组(a,b)=x.split(,”;(a,b)}.toSet
覆盖器.split.toSet
或对于lulz:
集合(对于{x或
)(对于(x@Paul,LRLucena让我们去看一场三方代码大战。墨西哥风格。
val overwriters ="v1,v2#v3,v4#v5,v6"              
val x = overwriters.split("#").toSet
for(tuple <- x) yield {
  val t = tuple.split(",")
  (t(0),t(1))
}