将运行以下代码:
fn last_el(arr: [&str; 2]) -> usize {
arr.len() - 1
}
fn main() {
let names = ["this", "that"];
println!("{}", names[last_el(names)]);
}
但是,它只对[&str; 2]
执行此操作,并且2必须与names
中的元素数匹配。例如,以下代码无法编译:
fn last_el(arr: [&str]) -> usize {
arr.len() - 1
}
fn main(){
let names = ["this","that"];
println!("{}", names[last_el(names)]);
}
我该怎么写才能不用指定N
呢?
我知道arr.len() - 1
可能比试图编写一个做同样事情的函数更令人头痛,但是就理解函数如何接受其中包含字符串的数组而言,为什么第二个示例编译失败?
2条答案
按热度按时间ukxgm1gy1#
[&str]
是一个unsized类型。你不能直接操作unsized类型的值,它们需要在一个引用或指针之后。在你的情况下,你应该使用&[&str]
(也称为一个 slice)。我还要注意到,在切片上定义了一个
last()
方法,它的用法如下:w51jfk4q2#
为了回答你的问题
将字符串的数组传递给函数,而不必指定N
您不能: