小编dns*_*hio的帖子

Elixir检查地图是否包含密钥列表

required_keys = [ "a", "b", "c" ]

map_to_check = %{ "x" => "foo", "y" => "bar", "z" => "baz" }

给定上面的required_keys列表和map_to_check映射,如何轻松测试map_to_check是否包含Elixir中required_keys列表中找到的所有键?

我知道我可以使用Map.has_key?(map_to_check, "a")检查是否存在一个值.

并尝试迭代required_keys给了我一个错误,因为我正在使用Enum.map,如下所示:

Enum.map(required_keys, fn k -> Map.has_key?(Map.keys(map_to_check), k) end)
Run Code Online (Sandbox Code Playgroud)

上面的方法不起作用,因为Enum.map不会迭代列表.

编辑

从查看答案,我注意到我的解决方案不起作用的原因不是因为Enum.map无法迭代列表,而是因为我Map.has_key?通过调用传入列表来实现Map.keys(map_to_check)

所以以下替代方案也应该有效:

Enum.map(required_keys, fn k -> Map.has_key?(map_to_check, k) end)
Run Code Online (Sandbox Code Playgroud)

elixir

5
推荐指数
1
解决办法
8075
查看次数

为什么在没有Deref胁迫其中一个字符串的情况下,不能在Rust中连接两个字符串?

这样可行:

let hello = "Hello ".to_string();
let world = "world!";

let hello_world = hello + world;
Run Code Online (Sandbox Code Playgroud)

但这不是:

let hello = "Hello ".to_string();
let world = "world!".to_string();

let hello_world = hello + world;
Run Code Online (Sandbox Code Playgroud)

但这样做:

let hello = "Hello ".to_string();
let world = "world!".to_string();

let hello_world = hello + &world;
Run Code Online (Sandbox Code Playgroud)

那是因为String需要一个指向String第二个原始的指针String吗?如果是这样,为什么?

rust

4
推荐指数
1
解决办法
587
查看次数

标签 统计

elixir ×1

rust ×1