sách gpt4 ai đã đi

Tuples - Chơi với tuples Rust

In lại 作者:行者123 更新时间:2023-11-29 08:08:12 25 4
mua khóa gpt4 Nike

这是玩 Rust 的链接:

http://rustbyexample.com/match/guard.html

我发现 Rust 在我对无符号变量取反时显示警告,因此执行下面的代码以

结尾

warning: negation of unsigned int variable may be unintentional

Mã số:

fn main() {
let some = 2953495866u;
let pair = (some, -some);
// TODO ^ Try different values for `pair`

println!("Tell me about {}", pair);
// Match can be used to destructure a tuple
match pair {
// Destructure the tuple
(x, y) if x == y => println!("These are twins"),
// The ^ `if condition` part is a guard
(x, y) if x + y == 0 => println!("Antimatter, kaboom!"),
// `_` means don't bind the value to a variable
(x, _) if x % 2 == 1 => println!("The first one is odd"),
_ => println!("No correlation..."),
}
}

但是当你把代码改成有点像

let pair = (2953495866u, -2953495866);

它静默运行,以 (2953495866, 18446744070756055750) 的元组结束,这是 2 个无符号整数。至于我,我宁愿在这里收到有关将负数转换为 uint 的警告。

你怎么看待这种情况?

1 Câu trả lời

一个解释,以防万一。在这段代码中:

fn main() {
//let some = 2953495866u;
let pair = (2953495866u, -2953495866);
// TODO ^ Try different values for `pair`

println!("Tell me about {}", pair);
// Match can be used to destructure a tuple
match pair {
// Destructure the tuple
(x, y) if x == y => println!("These are twins"),
// The ^ `if condition` part is a guard
(x, y) if x + y == 0 => println!("Antimatter, kaboom!"),
// `_` means don't bind the value to a variable
(x, _) if x % 2 == 1 => println!("The first one is odd"),
_ => println!("No correlation..."),
}
}

-2953495866 文字是无类型的;这意味着类型检查器可以从它的用法中推断出它的具体类型。事实证明,它被存储到一个元组中,然后这个元组被解构,并比较它的两个组成部分。因为第一个组件类型是đơn vị(因为对应的字面量有bạn后缀),类型检查器判定第二个组件类型也是đơn vị ,因此该文字也应该是 đơn vị.

未触发关于对无符号值求反的 lint 看起来确实像是编译器中的错误。我提交了đây .

关于tuples - 玩转 Rust 的元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25260919/

25 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com