我有一个Scala代码:
print(dfTrain.shape)
print(dfTrain2.shape)
print(test.shape)
print(test2.shape)
print(test3.shape)
print(test4.shape)
如何调用此方法?
试过这个:
import collection.mutable._
def myMethod(mycollection: Map[A, B]) = {
...
}
收到错误:
myMethod(["test1", "test2"])
感谢。
答案 0 :(得分:2)
Map
是一种数据结构,它将键(某种类型K
)映射到值(某种类型{{ 1}})。在 Scala 中,这样的一对可以用语法V
表示。如果您的意图是使用单个key -> value
键“test1”映射到{test1“的String
值,那么您可以按如下方式执行此操作:
String
您对Map("test1" -> "test2")
的声明无效:您需要为myMethod
和A
定义实际类型,或者为它们设置通用参数(以便该方法是通用的):
B
无论哪种方式,您都可以在调用方法时将结果用作参数,如下所示:
// With specific types (assuming both keys and values have String types):
def myMethod(mycollection: Map[String, String]) = //...
// In generic form (allows any key type A, or value type B):
def myMethod[A, B](mycollection: Map[A, B]) = //...
需要注意的一些要点:
myMethod(Map("test1" -> "test2"))
使用Map("test1" -> "test2")
作为键和值的类型,相当于String
。Map[String, String]("test1" -> "test2")
我强烈建议您阅读一本关于 Scala 的好书,例如Odersky,Spoon& amp;的优秀Programming in Scala, 3rd Edition。 Venners,为了熟悉它的语法和标准库。
最后一点,我强烈建议您尽可能使用{em> immutable 版本的Map("key1" -> "value1", "key2" -> "value2", "key3" -> "value3")
。如果您不熟悉函数式编程原则,这一开始看起来并不常见,但其好处是巨大的。