elixir - 灵药尝试救援
问题描述
我不确定如何最好地做到这一点:
我有一个查找 IP 并返回其所在国家/地区的函数。
country = Geolix.lookup(remote_ip).country.registered_country.name
有时它会失败,在这种情况下,没有定义任何数组键。
在其他语言中,我可能会执行以下操作:
try do
country = Geolix.lookup(remote_ip).country.registered_country.name
rescue
country = nil
end
我真的很难让语法正确。这也感觉不是很“干净”;有没有更好的办法?
解决方案
您还可以使用case ... do
模式匹配,如果结果case
具有您需要的所有键,则它与您提取名称的第一个键匹配,如果不是,则意味着您从中获得的任何内容Geolix.lookup/1
都不符合您想要的模式并且您返回零
country =
case Geolix.lookup(remote_ip) do
%{country: %{registered_country: %{name: name}}} -> name
_ -> nil
end
推荐阅读
- python - 如何在“map”函数调用中将参数传递给函数?
- javascript - 如何选择父节点的第一个子节点?
- java - 我们可以通过 Streaming 和 mapping 抛出两个异常吗?
- reactjs - 根据用户权限显示菜单列表
- python - 如何计算采购订单行中每列的平均价格?
- c# - ActionFilterAttribute - 当顺序很重要时
- android - 小部件未返回 Future 的视图
颤振状态 - bash - 如何在 bash 中从 .txt 文件中读取参数
- spring - Spring Boot 不加载 javascript 文件
- genesys - 如何添加呼叫属性。通话结束后就像标记完成按钮一样?