Итак, давайте сначала разберемся с проблемой.
Вы указали originalPredicate: (Char) -> Boolean
, поэтому он вернет логическое значение в соответствии с символом. Например, если он вернет true для 'a', 'c', 'e', et c. (просто пример), тогда вы должны вернуть false для них и true для 'b', 'd', 'f', et c.
Итак, вы хотите вызвать originalPredicate
, знать результат (т.е. истина или ложь), а затем инвертировать результат и затем вернуть его.
val notPredicate: (Char) -> Boolean = { char ->
val booleanValue = originalPredicate(char)
return@notPredicate !booleanValue
}
Если вы упростите шаги и используйте it
, которое является именем переменной по умолчанию внутри лямбда, и поскольку последний оператор в лямбде возвращается сам по себе (поэтому вам не нужно писать явный return):
val notPredicate: (Char) -> Boolean = { !originalPredicate(it) }