【发布时间】:2021-11-16 20:29:57
【问题描述】:
Problem.
我对此很好奇,因为如果可以的话,我认为这段代码中不需要 if 的东西。
我特别想要 .filter_map(|ch| ch.to_digit(10)).ch.to_digit() 如果 ch 不是数字则返回 None 。然后我想返回 false。
如果我能做到这一点,我想我不需要if !code.chars().all(|ch| ch.is_digit(10) || ch.is_whitespace()) 这张支票。
(我只是想知道如果在链接中进行检查,我可以这样做。)
如果不允许,有没有办法在函数链中进行异常检查?
谢谢。
/// Check a Luhn checksum.
pub fn is_valid(code: &str) -> bool {
if code.trim().len() <= 1 {
return false;
}
if !code.chars().all(|ch| ch.is_digit(10) || ch.is_whitespace()) {
return false;
}
code.chars()
.rev()
.filter_map(|ch| ch.to_digit(10))
.enumerate()
.map(|( i, n)|
match i % 2 {
0 => n,
_ if n == 9 => n,
_ => (n * 2) % 9,
}
)
.sum::<u32>() % 10 == 0
}
【问题讨论】:
-
你能改写你的问题吗?我不明白你的问题,对不起。你的问题是什么?你想达到什么目标?也许写一些伪代码或类似的。