Я написал код в scala для разрешения относительных (файлов) путей, см. Код ниже. Я сохраняю пути как списки строк, и когда я вычисляю относительный путь, я использую переменную списка переменных, в которой храню измененные копии списка, на котором я работаю.scala list manipulation: это хорошая скала?
У меня есть ощущение, что это, вероятно, не лучший способ сделать это, или это так? Должен ли я использовать изменяемый список и манипулировать этим? Или я должен использовать только неизменяемые списки, никаких варов вообще и функциональную версию? Как должен быть написан метод «относительный»?
class PathInfo(e: List[String]) {
val elements=e;
def relative(s : String) :PathInfo= relative(PathInfo.fromString(s));
def relative(that : PathInfo) : PathInfo = {
var list : List[String]=List();
for (item <- elements) {
list = list :+ item;
}
for (item <- that.elements) {
item match {
case "." => ;
case ".." => list = list dropRight(1);
case other => list = list :+ other;
}
}
new PathInfo(list);
}
override def toString : String = {
elements.mkString("/");
}
}
object PathInfo {
def fromString(s : String) : PathInfo={
new PathInfo(List.fromString(s,'/'));
}
}
документ, что делают ваши функции, то есть хороший стиль на каждом языке, тогда кто-то может вам помочь –