我希望用户在命令行参数中传递给我编写的 Rust 函数。我知道可以使用 int::from_str(args[1])
进行转换,但这会返回一个 Option<int>
, 这意味着为了将其传递给需要一个 int
的函数(如下面的函数),我必须使用一个 match
语句。但是有 n 个参数时,就有 2^n 种可能性。编写一系列嵌套的 match
语句将是可怕的。如果有一种方法可以像下面那样做就好了:
// will return either Some(int) or None
let start = int::from_str(args[1]), end = int::from_str(args[2]);
if typeof(start) == Some && typeof(end) == Some {
println(fmt!("You entered: %d, %d", start, end);
} else {
println("Error with arguments.");
}
有没有其他的方法能够测试某个枚举成员,除了使用
match
?
is_some()
方法及其类似的方法需要为任何类型显式编写吗? - limp_chimpOption
已经定义了.is_some()
方法;但是如果你自己定义枚举类型,就不会自动有这样的方法。 - huonis_some
的实现,它是!self.is_none()
,这等同于match *self { None => true, Some(_) => false }
。(但不用担心额外方法调用会影响性能;这些都被标记为#[inline]
。) - Chris Morgan