我是Scala和函数式编程的新手。我正在尝试像这样在main()函数中使用全局变量的功能,
object Scala_Object {
var myDict = scala.collection.mutable.Map[String,String]()
def str_rev(s : String) : String = {
myDict.put(s,s.reverse)
return (s.reverse)
}
def main (args: Array[String]){
..
..
val result = parsedArray.map(line => line.map { word =>
if( word == "") word
else if(word == line(2) || word == line(3)) str_rev(word)
else if ( word == line(1) || word == line(26)) str_rev(word)
else word})
}
在程序结束时,仅将parsedArray(是Array[Array[String]]
)的第一行中的元素添加到字典myDict中。有什么我想念的吗?我注意到没有关于全局变量的文档/教程,所以我认为在SCALA中根本没有所谓全局变量的概念。然后,如何在Scala中处理全局变量的概念?
您的示例应该可以正常工作。如果有问题,似乎不在您发布的代码中。附带说明一下,您myDict
不需要是a,var
因为您不想重新分配它。Scala中的var
andval
关键字不是引用对象或类实例,而是引用,例如:
val x = 5
x = 6 // This will fail, reassignment to val
var y = 3
y = 5 // This works
val z = mutable.Map[String,String]()
z.put("foo", "bar") // This works because the reference is not modified
z = mutable.Map[String,String]() // This fails
在Scala_Object
Scala控制台上测试方法如下:
scala> :paste
// Paste the code of your Scala_Object here
// And press Ctrl-D
defined module Scala_Object
scala> Scala_Object.myDict
res1: scala.collection.mutable.Map[String,String] = Map()
scala> ScalaObject.str_rev("foo")
res4: String = oof
scala> ScalaObject.myDict
res5: scala.collection.mutable.Map[String,String] = Map(foo -> oof)
scala> ScalaObject.str_rev("lol")
res6: String = lol
scala> ScalaObject.myDict
res7: scala.collection.mutable.Map[String,String] = Map(lol -> lol, foo -> oof)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句