Привет @ aaron02, быстро проверив ваш код, есть пара неверных вещей, одна из которых вы заявляете.
val ключевое слово определяет константу, и ваш кодпытаясь переопределить константу "info", основываясь на этом условии ... если вы этого хотите, вам, вероятно, следует использовать переменную.
С другой стороны, в пределах, если вы определяете константу на основе самой ее... это рекурсивность, для которой вы видите ошибку ... компилятор помогает вам с выводом типа, но в этом случае он требует, чтобы вы указали тип.
Следующее будет работать для изоляции, но вместев вашем коде компилятор расскажет вам о вашем коде, пытающемся переназначить значение.
val info: Array[String] = info.take(42) ++ info.drop(50)
, надеюсь, это немного осветит вашу кодировку.
update:
Этот фрагмент может быть близок к тому, что вы хотите:
def extract_FileContent = (file_contents: String) => {
var info = file_contents.replace("\",\"", " ")
.replace("\"", "")
.replaceAll(" ", "|")
.replaceAll(" : \r\n", " : empty\r\n")
.replaceAll("\r\n", "|")
.replaceAll(" : ", "|")
.replaceAll(": ", "|")
.split("\\|")
.map(x => x.trim.replaceAll(" -", ""))
.filterNot(s => s == "")
if (info.toList(42) == "Start Archive Record") {
info = info.take(42) ++ info.drop(50) // recursive error here
}
info // This as last statement will mean we return the Array[String], otherwise we were returning a Unit (side effect only)
}