РЕДАКТИРОВАТЬ: Я продолжаю получать голосов здесь. Просто для протокола, я больше не думаю, что это важно. Я не нуждался в этом с тех пор, как отправил.
Я бы хотел следовать в 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's same: " + i);
}
Мне не нужно создавать новую переменную, и мне не нужно дважды вычислять i + 1.