如何为逻辑运算符多次借用变量
How to Borrow variable multiple times for Logical Operator
我们如何多次使用一个变量作为逻辑运算的ref?例如,OR 语句?
let check:HashMap<i8, i8> = HashMap::new();
// insert some data into hashmap
if &check.contains_key(1) || &check.contains_key(3) {
println!("YES!");
}
抱歉,刚接触 Rust,但正在努力学习
contains_key
的输入应该是引用(借用),正如 Chayim 所说,您可能需要括号来指定优先级。
use std::collections::HashMap;
pub fn main() {
let check:HashMap<i8, i8> = HashMap::new();
// insert some data into hashmap
if (&check).contains_key(&1) || (&check).contains_key(&3) {
println!("YES!");
}
}
正如其他人所说,你不是在借用你认为的东西,但 rust 的规则意味着你不需要像调用 HashMap
的方法时那样借用。这更简单,我还让它可变,这样你就可以插入一个值并看到成功,以及查询失败。
use std::error::Error;
use std::collections::HashMap;
fn main() -> Result<(), Box<dyn Error>> {
let mut check:HashMap<i8, i8> = HashMap::new();
// insert some data into hashmap
check.insert(1, 5);
// Check for 1 or 3
if check.contains_key(&1) || check.contains_key(&3) {
println!("Contained a key of 1 OR 3!");
}
if check.contains_key(&3) {
println!("Contained a key of 3!");
}
else
{
println!("Did not contain a key of 3!");
}
Ok(())
}
您不需要在借用结构方法之前指定 &
或 & mut
。对于 arguments 是的,但不是方法本身,因为 Rust 中没有重载(就像在 C++ 或其他一些语言中一样),因此你调用它是明确的,所以 Rust 完成了工作给你借。
Link 到 this example 的在线 Rust 游乐场。
我们如何多次使用一个变量作为逻辑运算的ref?例如,OR 语句?
let check:HashMap<i8, i8> = HashMap::new();
// insert some data into hashmap
if &check.contains_key(1) || &check.contains_key(3) {
println!("YES!");
}
抱歉,刚接触 Rust,但正在努力学习
contains_key
的输入应该是引用(借用),正如 Chayim 所说,您可能需要括号来指定优先级。
use std::collections::HashMap;
pub fn main() {
let check:HashMap<i8, i8> = HashMap::new();
// insert some data into hashmap
if (&check).contains_key(&1) || (&check).contains_key(&3) {
println!("YES!");
}
}
正如其他人所说,你不是在借用你认为的东西,但 rust 的规则意味着你不需要像调用 HashMap
的方法时那样借用。这更简单,我还让它可变,这样你就可以插入一个值并看到成功,以及查询失败。
use std::error::Error;
use std::collections::HashMap;
fn main() -> Result<(), Box<dyn Error>> {
let mut check:HashMap<i8, i8> = HashMap::new();
// insert some data into hashmap
check.insert(1, 5);
// Check for 1 or 3
if check.contains_key(&1) || check.contains_key(&3) {
println!("Contained a key of 1 OR 3!");
}
if check.contains_key(&3) {
println!("Contained a key of 3!");
}
else
{
println!("Did not contain a key of 3!");
}
Ok(())
}
您不需要在借用结构方法之前指定 &
或 & mut
。对于 arguments 是的,但不是方法本身,因为 Rust 中没有重载(就像在 C++ 或其他一些语言中一样),因此你调用它是明确的,所以 Rust 完成了工作给你借。
Link 到 this example 的在线 Rust 游乐场。