gpt4 book ai didi

arrays - 什么是单行解决方案来获取切片中除最后一项之外的所有内容而不使用最后一项的索引?

转载 作者:行者123 更新时间:2023-12-03 11:25:26 24 4
gpt4 key购买 nike

在 Python 中,我可以这样做:

a = [1,2,3]
b = a[:-1] #1,2

Rust 具有获取数组 range 切片的语法,您可以在其中提供最后一个索引,不包含:

let a = vec![1, 2, 3];
let b = &a[0..2]; // [1, 2]

如果我使用 -1 ,它会导致编译器错误:

let a = vec![1, 2, 3];
let b = &a[0..-1];

error[E0277]: the trait bound `usize: std::ops::Neg` is not satisfied
--> src/lib.rs:3:19
|
3 | let b = &a[0..-1];
| ^^ the trait `std::ops::Neg` is not implemented for `usize`

我怎样才能做到这一点?

例子 :

我想将“x1::x2::x3::...::xn”转换为“x1::x2::x3::...xn-1”
在 python 中,一行解决方案应该是

case_1 = "a::b::c";
ret = case1.split("::")[:-1]

但它是 rust 的一条线解决方案

let case_1 =  "a::b::c";
let ret = case_1.split("::").collect::<Vec<_>>() //what could i do next?

最佳答案

我认为 split_last 就是你要找的:它返回一个可选的 2 元组,其中包含对最后一个元素的引用和一个直到(但不包括)最后一个元素的切片。

IE。 a.split_last().unwrap().1 获取您的请求( unwrap 假定 a 非空)。

如果你想修改这些值,还有它的表亲 split_last_mut

关于arrays - 什么是单行解决方案来获取切片中除最后一项之外的所有内容而不使用最后一项的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61493836/

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