如何获取vfor中的key值并打印到控制台?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取vfor中的key值并打印到控制台?相关的知识,希望对你有一定的参考价值。
参考技术A方法/步骤
第一步,双击打开HBuilder工具,新建html5静态页面,并在页面中引入d3.js核心文件,如下图所示:
第二步,在<script></script>标签中,定义一个对象obj,然后调用d3.keys()方法获取对象的key,如下图所示:
第三步,保存代码并直接打开浏览器预览打印结果,可以发现获取对象的key值,如下图所示:
第四步,将d3中的方法keys改为values,对应的values是获取对象的value值,如下图所示:
第五步,再次保存代码并打开浏览器查看打印结果,注意在浏览器控制台查看,如下图所示:
第六步,最后如果将values方法改为entries,这个方法是可以获取keys和values,如下图所示:
hashmap - 如何遍历Hashmap,打印键/值并删除Rust中的值?
在任何语言中,这都应该是一项微不足道的任务。这在铁锈中不起作用。
use std::collections::HashMap;
fn do_it(map: &mut HashMap<String, String>) {
for (key, value) in map {
println!("{} / {}", key, value);
map.remove(key);
}
}
fn main() {}
以下是编译器错误:
<span style="color:#212529"><span style="background-color:#ffffff"><code style="margin-left:2px">error[E0382]: use of moved value: `*map`
--> src/main.rs:6:9
|
4 | for (key, value) in map {
| --- value moved here
5 | println!("{} / {}", key, value);
6 | map.remove(key);
| ^^^ value used here after move
|
= note: move occurs because `map` has type `&mut std::collections::HashMap<std::string::String, std::string::String>`, which does not implement the `Copy` trait
</code></span></span>
为什么要移动引用?从文档来看,我不认为移动/借用适用于引用。
最佳答案
不允许这样做至少有两个原因:
您需要有两个对map
的并发可变引用,一个由for
循环中使用的迭代器持有,另一个在变量map
中调用map.remove
。
在尝试对映射进行变异时,对映射中的键和值具有引用。如果允许您以任何方式修改映射,则这些引用可能会失效,从而打开内存不安全的大门。
核心生锈原理是混淆异或可变性。您可以对一个值有多个不可变的引用,也可以对它有单个不可变的引用。
我不认为搬家/借书适用于推荐人。
每种类型都受制于Rust的移动规则和可变别名。请让我们知道文件中的哪些部分说它不是,这样我们就可以解决这个问题。
为什么要移动引用?
它由两部分组成:
只能有一个可变引用for
循环take the value to iterate over by value
当您调用for (k, v) in map {}
时,map
的所有权将转移到for循环,现在已不复存在。
我将对映射执行不可变的借用(&*map
)并对其进行迭代。最后,我会把事情弄清楚:
fn do_it(map: &mut HashMap<String, String>) {
for (key, value) in &*map {
println!("{} / {}", key, value);
}
map.clear();
}
用以字母“a”开头的键删除每个值
我会用HashMap::retain
:
fn do_it(map: &mut HashMap<String, String>) {
map.retain(|key, value| {
println!("{} / {}", key, value);
!key.starts_with("a")
})
}
这就保证了当地图实际上被修改时,已经不存在了,所以任何借来的都已经过去了。
关于hashmap - 如何遍历Hashmap,打印键/值并删除Rust中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58380395/
以上是关于如何获取vfor中的key值并打印到控制台?的主要内容,如果未能解决你的问题,请参考以下文章
从 websocket 过滤 json 对象/值并打印到控制台日志
如何遍历 Hashmap、打印键/值并删除 Rust 中的值?