gpt4 book ai didi

arrays - 在 Kotlin 中获取索引从末尾开始计数的元素

转载 作者:行者123 更新时间:2023-12-02 12:09:41 24 4
gpt4 key购买 nike

在 Kotlin ArrayListString 中,是否有一个简单的函数来获取索引从末尾开始计数的元素?换句话说,是否有 Kotlin 等效于 Python 中的负索引切片?

最佳答案

没有用于切片的直接函数,但可以编写用户定义的函数或使用 reversed 函数轻松模拟,该函数适用于字符串、列表和数组。

Python 中的字符串

pyString = 'Python'
sObject = slice(-1, -4, -1)
print(pyString[sObject]) # output: noh

Kotlin 中的字符串
val pyString = "Python"
val sObject = pyString.reversed().substring(0, 3).reversed() // index 3 excluded
println(pyString) // output: noh

Kotlin 中的列表(或数组)
var py = arrayOf(1, 2, 3, 4, 5, 6, 7, 8)
var sObject = py.reversed().slice(0..2).reversed()
println(sObject)

但是,您可以使用 this 作为隐式对象进行方法或函数重载

例如,您可以编写 reverse substring ,但在这里您不能使用负数,因为我们需要与原始方法不同的参数配置文件:
fun String.substring(a: Int, b: Int = 0, rev: Boolean): String {
if (rev == true)
if (b == 0)
return this.substring(0, this.length - a)
else
return this.substring(this.length - b, this.length - a)
else
if (b == 0)
return this.substring(a)
else
return this.substring(a, b)
}

所以 "whale".substring(0,2,true)"le"
您可以使用类似的技术来扩展 slice 方法。

关于arrays - 在 Kotlin 中获取索引从末尾开始计数的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56695066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com