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