functional-programming - 如何在闭包中获取多个参数并打印它们?

标签 functional-programming rust closures

我调用了 env::vars_os 并希望以函数式方式打印所有这些:

env::vars_os()
    .map(|(k, v)| println!("k : {:?}, v : {:?} \n", k, v));

这什么都不打印,但是文章 Destructuring and Pattern Matching表明这应该是可能的。

最佳答案

查看 documentation for vars_os() ,我们看到它是元组的迭代器,其语法为 (a, b)。因此,将您的代码更改为

env::vars_os()
    .map(|(k, v)| println!("k : {:?}, v : {:?} \n", k, v));

应该可以解决问题。

您使用的语法将解构为一个结构,只是您省略了结构的名称,该名称位于大括号之前。


Rust 中的迭代器是惰性求值的,这意味着 map 中的代码在迭代器被消耗之前不会被执行。您可以通过调用 collect() 来完成此操作。但是,惯用的方法是将具有副作用(例如打印)的代码放在 for 循环中而不是 map 中:

for (k, v) in env::vars_os() {
    println!("k : {:?}, v : {:?} \n", k, v);
}

关于functional-programming - 如何在闭包中获取多个参数并打印它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44942644/

相关文章:

javascript - 如何将附加变量传递给下划线模板

iphone - 处理 Objective-C 中缺少闭包的问题

algorithm - Ocaml - 编写一个参数数量在运行时确定的函数

java - 我的整数列表在哪里变成了可选<Integer>列表?

struct - 为什么 sizeof::<Struct>() 不等于其字段大小的总和?

rust - 我可以在不包装浮点类型和滥用 BTreeMap 的情况下使用标准库执行二叉树搜索吗?

javascript - 函数计数调用

javascript - 在 try block 中分配值的最佳方法

functional-programming - 在 F# 中模拟多态变体?

rust - '#[derive(Debug)]' 在 Rust 中到底意味着什么?