From 0b5bb7f09c40c04b3ca4f06838a1065d4bb86507 Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Tue, 25 Apr 2023 04:29:55 +0800 Subject: [PATCH] Added Sequence.findLastIndex, Sequence.lastIndex functions in UtilsFactory --- .../yukihookapi/hook/utils/UtilsFactory.kt | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/utils/UtilsFactory.kt b/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/utils/UtilsFactory.kt index e1899d4e..71583583 100644 --- a/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/utils/UtilsFactory.kt +++ b/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/utils/UtilsFactory.kt @@ -73,6 +73,19 @@ internal inline fun Array.value() = if (isNotEmpty()) { "[${value.trim().let { it.substring(0, it.lastIndex) }}]" } else "[]" +/** + * 通过 [conditions] 查找符合条件的最后一个元素的下标 + * @return [Int] 没有找到符合条件的下标将返回 -1 + */ +internal inline fun Sequence.findLastIndex(conditions: (T) -> Boolean) = + withIndex().findLast { conditions(it.value) }?.index ?: -1 + +/** + * 返回最后一个元素的下标 + * @return [Int] 如果 [Sequence] 为空将返回 -1 + */ +internal inline fun Sequence.lastIndex() = foldIndexed(-1) { index, _, _ -> index }.takeIf { it >= 0 } ?: -1 + /** * 满足条件判断方法体 - 对 [kotlin.takeIf] 进行封装 * @param other 需要满足不为空的对象 - 仅用于判断是否为 null