我正在尝试做一个简单的二次函数,通过枚举返回根数及其值:
enum QuadraticResult {
None,
OneRoot(f32),
TwoRoots(f32, f32),
}
fn solveQuadratic(a: f32, b: f32, c: f32) -> QuadraticResult {
let delta = b * b - 4.0 * a * c;
match delta {
< 0 => return QuadraticResult::None,
> 0 => return QuadraticResult::TwoRoots(0.0, 1.0),
_ => return QuadraticResult::OneRoot(0.0),
}
}
这段代码无法编译,因为它报错了 '<' 和 '>'。是否有一种使用 match
实现的方法,或者我需要使用 if
语句?
snake_case
作为标识符。不要使用solveQuadratic
,而是使用solve_quadratic
。 - Shepmaster0.0
和1.0
。注意不要假设当返回QuadraticResult::TwoRoots(x, y)
时,x != y
。即使d
大于 0,-b + d.sqrt()
和-b - d.sqrt()
仍然可能相同。这里有一个简单的例子,但它也可能发生在有限的根上。你可能想要返回Option<(x1, x2)>
并让调用者决定x1
和x2
是否“足够接近”以被视为单个根。 - trent