РЕДАКТИРОВАТЬ: Я продолжаю получать upvotes здесь. Для записи я больше не думаю, что это важно. Я не нуждался в нем, так как я разместил его.
Я хотел бы сделать следующее в Scala...
def save(srcPath: String, destPath: String) {
if (!destPath.endsWith('/'))
destPath += '/'
// do something
}
... но я не могу поверить, что destPath
является val. Есть ли способ объявить destPath
как var?
Примечание: есть похожие вопросы, но во всех них OP просто хотел изменить массив.
Пожалуйста, не сообщайте следующее:
Мутирование входных параметров часто рассматривается как плохой стиль и делает это сложнее рассуждать о коде.
Я думаю, что это действительно в императивном программировании (Scala позволяет оба, правильно?) и добавление чего-то вроде tmpDestPath
просто добавит беспорядок.
РЕДАКТИРОВАТЬ: Не поймите неправильно. Я знаю, что строки не изменяются, и мне не нужна ссылка на ссылку, потому что я не хочу изменять данные вызывающего. Я просто хочу изменить локальную ссылку на строку, которую вызывающий мне дал с моей строкой (например, orig + '/'). Я хочу изменить это значение только в области текущего метода. Послушайте, это совершенно справедливо в Java:
void printPlusOne(int i) {
i++;
System.out.println("i is: " + i);
System.out.println("and now it same: " + i);
}
Мне не нужно создавать новую переменную, и мне не нужно дважды вычислять я + 1.