如何用exclude重构Ruby函数?弃用each实现单行代码逻辑
Ruby代码重构(单行实现,无需each)
原逻辑验证:遍历types中的所有v,若存在任意一个v不在address数组内则返回false,全部存在则返回true。
原实现代码:
address = %w[one two] result = true types.each do |_, v| result = false if address.exclude?(v) end
重构后的单行实现
address = %w[one two] result = types.all? { |_, v| address.include?(v) }
说明
- 使用Ruby的
Enumerable#all?方法,该方法会遍历集合中的每个元素,只有当所有元素都满足块内条件时返回true,否则返回false,完全匹配需求逻辑。 - 替换原有的
exclude?为include?,直接判断v是否存在于address中,逻辑更直观简洁。
内容的提问来源于stack exchange,提问作者tunosi st
相关产品推荐
相关产品推荐

