gpt4 book ai didi

ruby 一起做 map 和 compact

转载 作者:数据小太阳 更新时间:2023-10-29 08:58:48 26 4
gpt4 key购买 nike

我是 ruby​​ 的新手,这看起来不对,但工作正常

def get_internal_deps
self.internal_dependencies = self.sources.map do |f|
s = File.open(File.join(self.dir, f)).grep(/\d{8}-\w{5}/)
if s.length > 0
{:file => f, :line => s}
end
end.compact
#how crazy does that look?
end

那么,如果没有 end.compact,我该怎么做呢?

最佳答案

一些笔记

  • 您的方法名为 get_internal_deps,但看起来它实际上设置了一个实例变量。
  • 您可以定义 internal_dependencies 并使用缓存。
  • 在这种情况下,您需要为 @internal_dependencies 删除任何 attr_reader/writer/accessor
  • File.open(f) 不是很干净。
  • 您不需要 self.dirself.sources 中的 self
  • :line 是一个数组。不应该叫 :lines 吗?
  • 2 个独立的、简短的方法可能比一个更大的方法更好。

重构代码

def internal_dependencies
@internal_dependencies ||= sources.map{|s| parse_dependency(s) }
.reject{|h| h[:line].empty? }
end

private

def parse_dependency(source)
{
file: source,
line: File.readlines(File.join(dir, source)).grep(/\d{8}-\w{5}/)
}
end

关于ruby 一起做 map 和 compact,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41713958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com