gpt4 book ai didi

rust - 为什么返回类型为 (),即使它被设置为 bool?

转载 作者:行者123 更新时间:2023-11-29 07:59:21 24 4
gpt4 key购买 nike

在声明为返回 bool 的函数中:

pub fn is_palindrome(num: u64) -> bool {
let mut digits = Vec::new();
let mut temp = num;
loop {
digits.push(temp % 10);
temp /= 10;
if temp == 0 {
break;
}
}
for i in 0..digits.len() / 2 {
if digits[i] != digits[digits.len() - i] {
false // HERE I GET THE ERROR !!!!!!!
}
}
true
}

编译时出现错误:

error[E0308]: mismatched types
--> src/lib.rs:13:13
|
13 | false
| ^^^^^ expected (), found bool
|
= note: expected type `()`
found type `bool`

为什么会发生这种情况,如何解决这个问题?

最佳答案

这个问题是因为你有一个提前返回并且没有在它之前放置 return 关键字,如下所示:

if digits[i] != digits[digits.len() - i] {
return false
}

这是因为所有函数都将最后一行计算为返回值。如果你想在通过最后一行之前返回,你应该添加 return 关键字。

此处的另一个输入是重构您的代码,使其只返回一次:<​​/p>

pub fn is_palindrome(num: u64) -> bool {
let mut digits = Vec::new();
let mut temp = num;
let mut retval = true;
loop {
digits.push(temp % 10);
temp /= 10;
if temp == 0 {
break;
}
}
for i in 0..digits.len() / 2 {
if digits[i] != digits[digits.len() - i] {
retval = false; // you might want to put a break here so that it exits the loop after finding the first issue
}
}
retval
}

关于rust - 为什么返回类型为 (),即使它被设置为 bool?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55427244/

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