Модифицировать функции в лямбда функции Kotlin
Есть такой код:
private fun calc(s:String):Int
{
var sum = 0;
for(c in s)
{
if(c.toInt() < 48 || c.toInt() > 58)
{
println("Ошибка ввода!")
break;
}
if(c.toString().toInt() % 3 == 0)
{
sum+=c.toString().toInt();
}
}
if(sum == 0)
{
println("Цифрт в числе кратных 3 не было.");
}
else
{
println("Сумма цифр кратных 3 в числе ${s.toString()} = " + sum)
}
return sum;
}
fun main(args: Array<String>) {
var s = readLine();
if(s!=null)
{
calc(s);
}
}
Нужно изменить данный функционал таким образом, чтобы условие по которому происходит отбор, можно было передавать как аргумент(Один из аргументов функции должен быть lambda со значением по умолчанию - условием, сумма цифр в числе кратных 3.
Может кто нибудь, знаком с данным функционалом на котлин и знает как решить данную задачу?
Ответы (1 шт):
Автор решения: Elizaveta
→ Ссылка
Эта задача очень похожа на учебную, поэтому я приведу пример, описывающий основной подход к решению
fun main() {
calc("my string")
calc("not my string")
calc("another string"){it=="another string"}
}
fun calc(s: String, myFilterFunction: (s: String) -> Boolean = { it == "my string" }) {
if (myFilterFunction(s)) {
println("isFiltered")
}
}