【发布时间】:2017-11-07 09:24:01
【问题描述】:
我有一个方法,比如 func_1,我正在从中返回一个 Map。
然后我想迭代这个 Map 并想在我的第二种方法中对它的内容(逐个记录)进行操作,比如 func_2。
什么是更好的方法。就像我应该将整个 Map[String,String] 作为参数传递给我的第二个方法 'func_2' 然后在 'func_2' OR..OR.. 中迭代和处理它。我应该让 'Func_2' 接受一个 (String, String) 元组作为参数,然后使用 resultmap.map(x => func_2(x_1, x_2))。另一个角度是.. 我应该使用VAL 而不是def 来创建函数,因为val 只会被调用一次。
下面是代码:
功能:1
val func_1 = (path:String) => {
val inputBufferedSource = Source.fromFile(path)
val indexMap = inputBufferedSource.getLines().map(x => (x.split(",")(0).toLowerCase.trim, x.split(",")(1).toLowerCase.trim)).toMap
inputBufferedSource.close()
indexMap
}:Map[String,String]
val func_2 = <Signature & logic>
现在哪个更好
val func_2(x:String, y:String)
或
val func_2(inMap:Map[String,String])
然后..调用它
val resultMap = obj.func_1(args(0))
resultMap.map(x => obj.func_2(x._1,x._2)) // This will call the method for every iteration But if it is val then only once i guess
或
val resultMap = obj.func_1(args(0))
obj.func_2(resultMap) // Here method is called just once
【问题讨论】:
标签: scala functional-programming