лямбда-функция не захватывает окружающие переменные - PullRequest
0 голосов
/ 13 мая 2019

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. Почему?

1 Ответ

4 голосов
/ 13 мая 2019

Сбор ответов из комментариев дает следующее решение:

def getNewCodes(oldCodes: Array[String]): Array[String] =
  oldCodes.map(f)

На практике вы обычно просто пишете это в строке и не занимаетесь отдельным методом, тем более, что неясно, откуда берется f.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...