通过将地图条目转换为Elixir中的downcase来更新地图条目

通过将地图条目转换为Elixir中的downcase来更新地图条目,elixir,Elixir,如何通过将键的值作为初始值来更新映射中的值?也就是说,我想将字符串值转换为小写形式,如下所示: Map.update(m1, "key1", ???, &String.downcase/1) “?”中应该有什么,因为它需要初始值?由于初始值仅在键不存在时使用,因此您可以将nil作为默认值传入,如下所示: Map.update(m1, "key1", nil, &String.downcase/1) 由于该初始值仅在键不存在时使用,因此您只需传入nil作为默认值,如下所示: M

如何通过将键的值作为初始值来更新映射中的值?也就是说,我想将字符串值转换为小写形式,如下所示:

Map.update(m1, "key1", ???, &String.downcase/1)

“?”中应该有什么,因为它需要初始值?

由于初始值仅在键不存在时使用,因此您可以将
nil
作为默认值传入,如下所示:

Map.update(m1, "key1", nil, &String.downcase/1)

由于该初始值仅在键不存在时使用,因此您只需传入
nil
作为默认值,如下所示:

Map.update(m1, "key1", nil, &String.downcase/1)

如果您需要一个代码,以便在映射中没有此类值的情况下优雅地回退,请使用:

这样,您就永远不会在某些输入上找到应用程序意外崩溃的原因


如果您仍然希望使用最简单的路径,则传递空字符串比传递
nil
更安全:

Map.update(m1, "key1", "", &String.downcase/1)

后者至少不会抛出,它会在未知键上静默返回一个空字符串。

如果您需要代码在映射中没有此类值的情况下优雅地回退,请使用:

这样,您就永远不会在某些输入上找到应用程序意外崩溃的原因


如果您仍然希望使用最简单的路径,则传递空字符串比传递
nil
更安全:

Map.update(m1, "key1", "", &String.downcase/1)

后者至少不会抛出,它会在未知键上静默返回一个空字符串。

如果该键保证存在,您可以使用
Map.update/3
,不需要初始值:
Map.update!(m1,“key1”和&String.downcase/1)
。如果保证密钥存在,您可以使用
Map.update/3
,不需要初始值:
Map.update!(m1,“key1”和String.downcase/1)