【发布时间】:2017-09-15 16:14:08
【问题描述】:
我是 elixir 的新手,正在尝试找出重写此 ruby 方法的正确方法:
def filter_events(events)
events.select { |event| event[:id].present? && event[:vhost].present? }
end
在灵丹妙药中。这是我目前所拥有的:
def filter_events(events) do
Enum.filter(events, &(Map.has_key?(&1, :id) && Map.has_key?(&1, :vhost)))
end
有没有更好/更惯用的方法来做到这一点?
【问题讨论】:
-
如果您包含了 ruby 方法的实际作用,那就太好了。另外,你能解释一下为什么你不认为这是惯用的吗?
-
我想我正在寻求澄清这是否是惯用的,或者是否有更清洁的方法来做到这一点。我最初考虑使用模式匹配,但我找不到匹配地图值“非空”的方法。 ruby 方法接受一个哈希数组,然后返回一个数组,该数组仅包含具有
id和vhost两个键值的哈希值。
标签: elixir