f(code:String):String 是新的代码功能,它采用一个旧的代码字符串并生成新的代码字符串。
def getNewCodes(oldCodes: Array[String]): Array[String] = {
val newCodes: Array[String] = Array()
oldCodes.foreach(code => newCodes :+ f(code)) // newCodes is not captured by the lambda function
newCodes // returns the empty array
}
我通过了lambda函数来获取新代码并将其更新为newCodes数组。新的代码数组应在函数末尾返回。但是会返回一个空数组。
似乎lambda函数未捕获newCodes
变量,为什么?
答案 0 :(得分:4)
从评论中收集答案可提供以下解决方案:
def getNewCodes(oldCodes: Array[String]): Array[String] =
oldCodes.map(f)
在实践中,您通常只写一行代码,而不必担心使用单独的方法,特别是因为不清楚f
的来源。