如何收紧这个Ruby代码?
我怎样才能写得更好。我试图使用inject而不是each,但一直遇到错误。我想把这座大楼收紧如何收紧这个Ruby代码?,ruby,refactoring,Ruby,Refactoring,我怎样才能写得更好。我试图使用inject而不是each,但一直遇到错误。我想把这座大楼收紧 def to_proc levels_of_nesting = @fields.zip(@orderings) procedure = nil levels_of_nesting.each do |field, ordering| procedure = proc_for(field, ordering) and next if procedure.nil?
def to_proc
levels_of_nesting = @fields.zip(@orderings)
procedure = nil
levels_of_nesting.each do |field, ordering|
procedure = proc_for(field, ordering) and next if procedure.nil?
procedure = procedure.decorate_w_secondary_sorting_level(proc_for(field, ordering))
end
procedure
end
我会使用一个映射来运行proc_for中的所有内容,然后使用inject组合这些过程
def to_proc
@fields.zip(@orderings).map do |field, ordering|
proc_for(field, ordering)
end.inject do |prev,curr|
prev.decorate_w_secondary_sorting_level curr
end
end
这使得迭代器方法为您执行流控制,避免虚假的nils和if语句。如果对proc_for(第6行)的第一次调用返回nil,那么第7行就会中断。
和next
应该是还是next
?在我的计算机上运行良好。我用的是1.9