我需要进行以下转换,columnNames
应该为Seq[String]
,但是始终为Seq[Any]
。
我该如何解决这个任务?
val cols = Seq("col1","col2")
val columnNames: Seq[String] = cols ++ "col3"
答案 0 :(得分:2)
您应该这样做:
val columnNames: Seq[String] = cols :+ "col3"
或
val columnNames: Seq[String] = cols ++ Seq("col3")
在您的情况下,结果为Seq[Any]
,因为Any
是String
和Char
的共同超类型
答案 1 :(得分:0)
应为:
val columnNames: Seq[String] = cols :+ "col3"
:+
是someVariable.next()返回的任何类型的方法。
您将获得类Any
是Scala类层次结构的根。 Scala执行环境中的每个类都直接或间接继承自该类。
答案 2 :(得分:0)
++
是两个集合上的二进制运算符(方法)。但是:+
或+:
是向element
添加collection
的运算符(collection
应该始终与:
相邻,并且{要添加到集合中的element
应该始终与+
中的:+
相邻,即,它应该用作{{1}的collection :+ element
或element +: collection
}或append
到prepend
。因此,element
将为我们提供预期的答案,因为这样collection
将被视为将cols :+"col3"
添加到"col3"
string element
。
在使用cols
时,collection
cols ++ "col3"
被编译器视为一个集合,即String
,"col3"
是一个集合的字符串。因此,结果集合为List('c','o','l','3')
,因为它包含字符串和字符,编译器将cols
和List[Any]
的超类型推断为String
。