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
}
Я передал лямбда-функцию для получения нового кода и обновил его до массива newCodes. Новый массив кода должен быть возвращен в конце функции. Но пустой массив возвращается.
Кажется, лямбда-функция не newCodes
переменную newCodes
Почему?
Всего 1 ответ
Сбор ответов из комментариев дает следующее решение:
def getNewCodes(oldCodes: Array[String]): Array[String] =
oldCodes.map(f)
На практике вы обычно просто пишете это в строке и не беспокоитесь об отдельном методе, тем более что не ясно, откуда берется f
.