Вот несколько комментариев о том, как вы это написали.При использовании этого синтаксиса, def checkGuess() { ... }
, функция не будет возвращать никакого значения, вместо этого она будет возвращать Unit.
Это означает, что вы используете его только для побочного эффекта (такого как установка некоторой переменной за пределамиблок кода или печать некоторых значений).Проблема заключается в том, что вы не устанавливаете какое-либо значение или ничего не печатаете внутри функции (без печати, без присвоения).
То, что вы не показываете в своем фрагменте кода, это то, где вы сохраняете строку, чтобы угадатьпользовательский ввод и обратная связь для печати.Вы можете передать первые два в качестве аргументов, а последний - в качестве возвращаемого значения.Это делает ввод и вывод самодостаточным в функции и не предполагает, где вы предоставляете обратную связь.
def feedback(target:String, guesses:String): String = {
// target is the string to guess like "scala"
// guesses are the letters that have been provided so far, like "ac"
// last expression should be the feedback to print for instance "_ca_a"
}
Тогда вы можете думать о функции как о преобразовании каждой буквы в target
с _ или с самим собой.в зависимости от того, содержится ли оно в guesses
.Для этого target map { c => expr }
будет работать очень хорошо, если вы поймете, как заставить expr вернуть c , если c находится в guesses
и '_' в противном случае.