Kotlin:检查lambda内部的结果

Kotlin:检查lambda内部的结果,kotlin,lambda,Kotlin,Lambda,我有lambda表达式: repository!!.getAllByDateForUser(userId, date) .map { ... } .flatMap { ... } 等等。我需要在执行第一行之后检查数据。例如,检查结果列表是否为空。如果为空,则返回其他对象或抛出异常。如果它不是空的,我将进一步运行表达式。但我想在表达式中检查它 请给出建议,如何操作。您可以使用还()对对象执行附加操作,同时返回对象本身: 由于也是()

我有lambda表达式:

repository!!.getAllByDateForUser(userId, date)
                .map { ... }
                .flatMap { ... }
等等。我需要在执行第一行之后检查数据。例如,检查结果列表是否为空。如果为空,则返回其他对象或抛出异常。如果它不是空的,我将进一步运行表达式。但我想在表达式中检查它

请给出建议,如何操作。

您可以使用
还()
对对象执行附加操作,同时返回对象本身:

由于
也是()
是一个内联函数,因此Kotlin允许您使用非本地返回从lambda中退出当前函数

repository!!.getAllByDateForUser(userId, date)
    .map { ... }
    .also { list ->
        if (list.isEmpty())
            return xy // exit function (not only lambda)
    }
    .flatMap { ... }
当然,如果您喜欢这种样式,您可以在每次链接调用的一行上执行此操作:

repository!!.getAllByDateForUser(userId, date)
    .map { ... }
    .also { if (it.isEmpty()) return xy }
    .flatMap { ... }
您可以使用
还()
对对象执行其他操作,同时返回对象本身:

由于
也是()
是一个内联函数,因此Kotlin允许您使用非本地返回从lambda中退出当前函数

repository!!.getAllByDateForUser(userId, date)
    .map { ... }
    .also { list ->
        if (list.isEmpty())
            return xy // exit function (not only lambda)
    }
    .flatMap { ... }
当然,如果您喜欢这种样式,您可以在每次链接调用的一行上执行此操作:

repository!!.getAllByDateForUser(userId, date)
    .map { ... }
    .also { if (it.isEmpty()) return xy }
    .flatMap { ... }