【发布时间】:2020-10-27 05:47:28
【问题描述】:
所以我在 Rust 中编写了这个递归字符串连接函数,它似乎有效,但我有点困惑为什么它有效。
fn join(separator: &str, strs: &[&str]) -> String {
match strs.len() {
l if l > 1 => return strs[0].to_string() + separator + &join(separator, &strs[1..]),
l if l == 1 => return strs[0].to_string(),
_ => return "".to_string(),
}
}
所以我有一个包含 3 个字符串的数组,我想加入一个字符串分隔符。该函数的第一个参数引用 str &str,第二个参数引用字符串数组 &[&str]。
let j1 = ["one", "two", "three"];
println!("{}", join(", ", &j1));
- 为什么递归连接必须定义为
&join(separator, &strs[1..])? - 为什么
&strs[1..]必须再次取消引用?
【问题讨论】:
标签: recursion rust reference pass-by-reference