我有一个项目列表/序列,例如[a_0, a_1, a_3, a_4,...,a_n]
我有一个 predicate (a) -> Boolean
,其中a_i
是 predicate 返回true的第i个位置的第一个元素。记住索引i
不预先已知。
有没有一个简单的解决方案可以使用stdlib中的单个操作符或stdlib中的操作符集合来获取子列表[a_0, a_1, a_3,...,a_i]
。
我不想维护一个变量来检查我们是否命中了满足条件的第一个元素,因为这看起来不好或功能不好,或者为此创建一个函数自定义函数
TLDR
我想要一个来自stdlib的操作符(或一组操作符),其行为如下:当calculateIndex()
返回3
时,listOf(1, 2, 3,...n).takeTill { i >= calculateIndex() }
应该返回[1, 2, 3]
2条答案
按热度按时间tzxcd3kk1#
您可以在所有列表上使用Kotlin扩展来执行您正在寻找的功能
字符串
使用符合您的要求:第一个月
e5nqia272#
你两者都有
.take(n: Int)
类似于.take(3)
,它只返回前n个元素.takeWhile(predicate: (T) -> Boolean)
,返回第一个元素,直到条件被违反。像.takeWhile { it.startsWith("a") }