如何创建具有可变数量的参数的函数?

蒂亚戈

如何在Rust中创建具有可变数量的参数的函数?

像这样的Java代码:

void foo(String... args) {
    for (String arg : args) {
        System.out.println(arg);
    }
}
Shepmaster

通常,您不能-Rust不支持可变参数函数,除非与使用varargs的C代码进行互操作。

这种情况下,由于所有参数都是相同的类型,因此可以接受切片:

fn foo(args: &[&str]) {
    for arg in args {
        println!("{}", arg);
    }
}

fn main() {
    foo(&["hello", "world", "I", "am", "arguments"]);
}

操场

除此之外,您还可以显式接受可选参数:

fn foo(name: &str, age: Option<u8>) {
    match age {
        Some(age) => println!("{} is {}.", name, age),
        None      => println!("Who knows how old {} is?", name),
    }
}

fn main() {
    foo("Sally", Some(27));
    foo("Bill", None);
}

操场

如果需要接受许多参数(可选或非可选),则可以实现一个构建器:

struct Arguments<'a> {
    name: &'a str,
    age: Option<u8>,
}

impl<'a> Arguments<'a> {
    fn new(name: &'a str) -> Arguments<'a> {
        Arguments {
            name: name,
            age: None
        }
    }

    fn age(self, age: u8) -> Self {
        Arguments {
            age: Some(age),
            ..self
        }
    }
}

fn foo(arg: Arguments) {
    match arg.age {
        Some(age) => println!("{} is {}.", arg.name, age),
        None      => println!("Who knows how old {} is?", arg.name),
    }
}

fn main() {
    foo(Arguments::new("Sally").age(27));
    foo(Arguments::new("Bill"));
}

操场

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

具有可变数量/参数类型的函数的TypeScript声明文件

我如何将数组作为args列表传递给C中具有可变数量参数的函数

具有可变数量参数的OCaml函数

如何创建带有可变数量的参数的函数变量?

枚举可以具有可变数量的参数吗?

如何编写具有可变数量的输出参数的匿名函数?

创建具有可变数量的泛型类型参数的元组的表达式

在LLVM中,如何插入/声明具有可变数量的参数的函数?

在R中使用可变数量的参数创建函数,

如何创建具有可变数量的类型参数的模板?

Python咖喱函数具有可变数量的参数

如何使用指针编写具有可变数量的参数的函数?

如何创建具有可变数量的“ for”循环且每个循环具有不同索引的函数?

具有可变数量ifelse中断的R函数

如何从类似的函数调用具有可变数量的参数的函数?

具有可变数量参数的函数的指针

创建具有可变数量的成员的类型

创建带有可变数量参数的函数

是否可以创建具有可变数量的元素的数组?

具有可变数量的numpy数组的Python函数

具有可变数量参数的 Concat CString

具有可变数量的特定模板类型参数的模板函数

如何将具有可变数量参数的函数分配给单个变量?

如何在 Python 中使用字符串作为函数参数并具有可变数量的参数

具有可变数量表标题的 DataTables 呈现函数

具有可变数量参数的函数的通用打字稿

具有可变数量参数的 f 字符串?

如何在JSDoc中注释具有可变数量参数的Function类型的对象?

Numba - 如何为可变数量的函数参数声明签名?